{"version":3,"file":"static/js/main.8879bb02.js","mappings":"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AAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,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,MACv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OAAQtsB,SAAU,qCAE/BusB,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,SAASA,IACT,CA0EA,OAzEAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACPC,KAAMP,GACNvuB,WAAYwuB,IAGxB,EACAG,EAAmBI,SAAW,SAAUznE,GACpC,IAAIiN,EAAOgV,KAAKqlD,iBAEhB,OADarlD,KAAKylD,eAAez6D,EAAMjN,EAE3C,EACAqnE,EAAmBK,eAAiB,SAAUz6D,EAAMjN,GAChDiiB,KAAKilD,YAAcj6D,EAAKs6D,UAAU7uB,WAClCz2B,KAAKglD,WAAah6D,EAAKs6D,UAAUC,KACjCvlD,KAAK0lD,YAAc9iD,SAASiO,cAAc,OAC1C7Q,KAAK0lD,YAAYl0C,UAAYzzB,EAC7BiiB,KAAK2lD,gBACL3lD,KAAK4lD,iBACL5lD,KAAK6lD,iBACL,IAAIC,EAAe9lD,KAAK0lD,YAAYl0C,UAEpC,OADAxR,KAAK+lD,gBACED,EAAa1vD,QAAQ,QAAS,IACzC,EACAgvD,EAAmBW,cAAgB,WAG/B,IADA,IAAIC,EAAQhmD,KAAK0lD,YAAYhtE,SACpB+9B,EAAI,EAAGA,EAAIuvC,EAAMjtE,OAAQ09B,IAE9B,IADA,IAAIyuC,EAAYc,EAAM7mE,SAASs3B,EAAEv6B,WAAY,KAAKu6C,WACzCtxB,EAAI,EAAGA,EAAI+/C,EA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CZ,KAAQ,QAMZtH,EAASuH,gBAAkB,CACvB,KAAM,WACN,KAAM,aACN,KAAM,WACN,SAAY,WACZ,WAAc,aACd,SAAY,WACZ,eAAkB,eAClB,iBAAoB,iBACpB,eAAkB,eAClB,SAAY,WACZ,KAAQ,QAEZvH,EAASqW,WAAa,CAClB,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,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,SA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","sources":["components/ajax/errorBoundary/index.ts","components/ajax/errorBoundary/AjaxErrorBoundary.tsx","components/assessments/driverEvaluationReport/question/answers/TextReadOnlyAnswer.tsx","components/assessments/driverEvaluationReport/question/Question.tsx","components/assessments/driverEvaluationReport/question/answers/CheckAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/DateTimeAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/IdentifiedTargetedCompletedSourceAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/NumberAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/ScoreAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/TextAnswer.tsx","components/assessments/driverEvaluationReport/question/answers/MultiLineTextAnswer.tsx","components/assessments/driverEvaluationReport/question/index.ts","components/assessments/driverEvaluationReport/DriverEvaluationReport.tsx","components/assessments/driverEvaluationReport/createDynamicForm.ts","components/authentication/AuthenticationContext.tsx","components/authentication/index.ts","components/authentication/useAuthentication.ts","webpack://dte-portal/./src/components/busyIndicator/BusyIndicator.module.css?ccdc","components/busyIndicator/BusyIndicator.tsx","components/busyIndicator/index.ts","webpack://dte-portal/./src/components/errorList/ErrorList.module.css?224c","components/errorList/index.ts","components/errorList/ErrorList.tsx","components/formikBindings/CheckBox.tsx","components/formikBindings/DatePicker.tsx","components/formikBindings/DropDownList.tsx","components/formikBindings/NumericTextBox.tsx","components/formikBindings/TextBox.tsx","components/formikBindings/UnboundField.tsx","components/formikBindings/index.ts","components/forms/actionButton/ActionButton.tsx","components/forms/cancelButton/CancelButton.tsx","components/forms/cancelButton/index.ts","components/forms/displayFormGroup/DisplayFormGroup.tsx","components/forms/emptyLabel/EmptyLabel.tsx","components/forms/emptyLabel/index.ts","webpack://dte-portal/./src/components/forms/formGroup/FormGroup.module.css?88a5","components/forms/formGroup/FormGroup.tsx","webpack://dte-portal/./src/components/forms/formHeading/FormHeading.module.css?0d0e","components/forms/formHeading/FormHeading.tsx","webpack://dte-portal/./src/components/forms/formSectionHeading/FormSectionHeading.module.css?5ef5","components/forms/formSectionHeading/FormSectionHeading.tsx","components/forms/index.ts","components/forms/submitButton/SubmitButton.tsx","components/hooks/index.ts","components/hooks/useBatchDataFetcher.ts","components/hooks/useDataFetcher.ts","components/hooks/useIsFirstRender.ts","components/localGroupMembers/member/form/ProfileTab.tsx","components/localGroupMembers/member/form/AddressTab.tsx","components/localGroupMembers/member/form/GroupTab.tsx","components/localGroupMembers/member/form/modals/addLink/schema.ts","components/localGroupMembers/member/form/modals/addLink/AddLinkModal.tsx","components/localGroupMembers/member/form/modals/addLink/createGroupMemberLink.ts","components/localGroupMembers/member/form/modals/deleteLink/DeleteLinkConfirmationModal.tsx","components/localGroupMembers/member/form/modals/deleteLink/schema.ts","components/localGroupMembers/member/form/modals/deleteLink/DeleteLinkModal.tsx","components/localGroupMembers/member/form/modals/deleteLink/deleteGroupMemberLink.ts","components/localGroupMembers/member/form/LinksTab.tsx","components/localGroupMembers/member/edit/reloadLinks.ts","components/localGroupMembers/member/form/identifyChanges.ts","components/localGroupMembers/member/form/schema.ts","components/localGroupMembers/member/form/groupLinkGridToolbar.ts","components/localGroupMembers/member/form/modals/deleteGroupLink/DeleteGroupLinkModel.tsx","components/localGroupMembers/member/form/modals/deleteGroupLink/deleteGroupLink.ts","components/localGroupMembers/member/form/modals/addGroupLink/AddGroupLinkModel.tsx","components/localGroupMembers/member/form/modals/addGroupLink/addGroupLink.ts","components/localGroupMembers/member/form/GroupLinksTab.tsx","components/localGroupMembers/member/form/getLocalGroupMemberDetails.ts","components/localGroupMembers/member/form/LocalGroupMemberDetailsForm.tsx","components/localGroupMembers/member/form/index.ts","components/localGroupMembers/member/edit/updateLocalGroupMemberDetails.ts","components/localGroupMembers/member/edit/EditLocalGroupMemberDetailsPage.tsx","components/localGroupMembers/member/edit/index.ts","components/modals/waitnotification/WaitNotificationModal.tsx","components/modals/notification/NotificationModal.tsx","components/modals/raiseMemberQuery/schema.ts","components/modals/raiseMemberQuery/RaiseMemberQueryModal.tsx","components/modals/raiseMemberQuery/raiseMemberQuery.ts","components/passwordPolicy/PasswordPolicyContext.ts","components/passwordPolicy/PasswordPolicyFeedback.tsx","components/passwordPolicy/passwordPolicyValidationRules.ts","components/passwordPolicy/createPolicyRules.ts","components/passwordPolicy/PasswordPolicyProvider.tsx","components/passwordPolicy/usePasswordPolicy.ts","components/resetCurrentPassword/schema.ts","components/resetCurrentPassword/ResetCurrentPasswordPage.tsx","components/resetCurrentPassword/resetCurrentPassword.ts","components/resetCurrentPassword/index.ts","components/resetCurrentPassword/ResetCurrentPasswordPageContainer.tsx","components/routes/requireAuth/RequireAuth.tsx","components/routes/requireAuth/index.ts","components/userData/UserDataContext.tsx","components/userData/index.ts","components/userData/useUserData.ts","constants.ts","services/api.ts","utils/parseModelStateErrors.ts","services/localStorageService.ts","utils/formatName.ts","utils/isDifferent.ts","utils/makeCancelable.ts","utils/queryString.ts","utils/toSyncfusionDataSource.ts","utils/toUtcDate.ts","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@remix-run/router/router.ts","../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/browser.js","../node_modules/@syncfusion/ej2-base/src/fetch.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-buttons/src/button/button.js","../node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","../node_modules/@syncfusion/ej2-buttons/src/common/common.js","../node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.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/timepicker/timepicker.js","../node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","../node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/@syncfusion/ej2-data/src/query.js","../node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.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/grid/actions/data.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-grids/src/grid/renderer/string-filter-ui.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-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-navigations/src/common/menu-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/menu-base.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/print.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/enum.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/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/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/base/grid.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.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/value-formatter.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","../node_modules/@syncfusion/ej2-lists/src/common/list-base.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/toolbar/toolbar.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/@syncfusion/ej2-popups/src/common/resize.js","../node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.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-buttons/src/button/button.component.js","../node_modules/@syncfusion/ej2-react-buttons/src/check-box/checkbox.component.js","../node_modules/@syncfusion/ej2-react-calendars/src/datepicker/datepicker.component.js","../node_modules/@syncfusion/ej2-react-dropdowns/src/drop-down-list/dropdownlist.component.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/columns-directive.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/grid.component.js","../node_modules/@syncfusion/ej2-react-inputs/src/numerictextbox/numerictextbox.component.js","../node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","../node_modules/@syncfusion/ej2-react-inputs/src/textbox/textbox.component.js","../node_modules/@syncfusion/ej2-navigations/src/tab/tab.js","../node_modules/@syncfusion/ej2-react-navigations/src/tab/tab.component.js","../node_modules/axios/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/utils.js","../node_modules/beautiful-react-hooks/esm/shared/isClient.js","../node_modules/beautiful-react-hooks/esm/shared/isAPISupported.js","../node_modules/beautiful-react-hooks/esm/shared/warnOnce.js","../node_modules/beautiful-react-hooks/esm/useMediaQuery.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/cookie/index.js","../node_modules/create-react-class/factory.js","../node_modules/create-react-class/index.js","../node_modules/exenv/index.js","../node_modules/deepmerge/dist/es.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/tiny-warning/dist/tiny-warning.esm.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_defineProperty.js","../node_modules/lodash-es/_baseAssignValue.js","../node_modules/lodash-es/_assignValue.js","../node_modules/lodash-es/_copyObject.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/isBuffer.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/_baseAssign.js","../node_modules/lodash-es/_nativeKeysIn.js","../node_modules/lodash-es/_baseKeysIn.js","../node_modules/lodash-es/keysIn.js","../node_modules/lodash-es/_baseAssignIn.js","../node_modules/lodash-es/_cloneBuffer.js","../node_modules/lodash-es/_copyArray.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_copySymbols.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_getSymbolsIn.js","../node_modules/lodash-es/_copySymbolsIn.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_getAllKeysIn.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/_initCloneArray.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_cloneArrayBuffer.js","../node_modules/lodash-es/_cloneDataView.js","../node_modules/lodash-es/_cloneRegExp.js","../node_modules/lodash-es/_cloneSymbol.js","../node_modules/lodash-es/_cloneTypedArray.js","../node_modules/lodash-es/_initCloneByTag.js","../node_modules/lodash-es/_baseCreate.js","../node_modules/lodash-es/_initCloneObject.js","../node_modules/lodash-es/_baseIsMap.js","../node_modules/lodash-es/isMap.js","../node_modules/lodash-es/_baseIsSet.js","../node_modules/lodash-es/isSet.js","../node_modules/lodash-es/_baseClone.js","../node_modules/lodash-es/clone.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/toPath.js","../node_modules/lodash-es/cloneDeep.js","../node_modules/formik/src/FormikContext.tsx","../node_modules/formik/src/utils.ts","../node_modules/formik/src/Formik.tsx","../node_modules/formik/src/Field.tsx","../node_modules/formik/src/Form.tsx","../node_modules/formik/src/connect.tsx","../node_modules/formik/src/FieldArray.tsx","../node_modules/formik/src/ErrorMessage.tsx","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/get-intrinsic/index.js","../node_modules/has-proto/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has/src/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/jquery/dist/jquery.js","../node_modules/local-storage-fallback/lib/CookieStorage.js","../node_modules/local-storage-fallback/lib/MemoryStorage.js","../node_modules/local-storage-fallback/lib/index.js","../node_modules/local-storage-fallback/lib/isSupported.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arrayReduce.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_asciiWords.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseAssign.js","../node_modules/lodash/_baseAssignIn.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseClone.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseHas.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsMap.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsSet.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_basePropertyOf.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_baseValues.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/_cloneDataView.js","../node_modules/lodash/_cloneRegExp.js","../node_modules/lodash/_cloneSymbol.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/_copySymbols.js","../node_modules/lodash/_copySymbolsIn.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_createCompounder.js","../node_modules/lodash/_deburrLetter.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getAllKeysIn.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getSymbolsIn.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_hasUnicodeWord.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_initCloneArray.js","../node_modules/lodash/_initCloneByTag.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_iteratorToArray.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/_unicodeWords.js","../node_modules/lodash/camelCase.js","../node_modules/lodash/capitalize.js","../node_modules/lodash/cloneDeepWith.js","../node_modules/lodash/deburr.js","../node_modules/lodash/eq.js","../node_modules/lodash/get.js","../node_modules/lodash/has.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/identity.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isMap.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isSet.js","../node_modules/lodash/isString.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/keysIn.js","../node_modules/lodash/mapKeys.js","../node_modules/lodash/mapValues.js","../node_modules/lodash/memoize.js","../node_modules/lodash/property.js","../node_modules/lodash/snakeCase.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/toArray.js","../node_modules/lodash/toString.js","../node_modules/lodash/upperFirst.js","../node_modules/lodash/values.js","../node_modules/lodash/words.js","../node_modules/object-assign/index.js","../node_modules/object-inspect/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/property-expr/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/index.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/utils.js","../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-fast-compare/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/react-modal/lib/components/Modal.js","../node_modules/react-modal/lib/components/ModalPortal.js","../node_modules/react-modal/lib/helpers/ariaAppHider.js","../node_modules/react-modal/lib/helpers/bodyTrap.js","../node_modules/react-modal/lib/helpers/classList.js","../node_modules/react-modal/lib/helpers/focusManager.js","../node_modules/react-modal/lib/helpers/portalOpenInstances.js","../node_modules/react-modal/lib/helpers/safeHTMLElement.js","../node_modules/react-modal/lib/helpers/scopeTab.js","../node_modules/react-modal/lib/helpers/tabbable.js","../node_modules/react-modal/lib/index.js","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../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/side-channel/index.js","../node_modules/synchronous-promise/index.js","../node_modules/toposort/index.js","../node_modules/warning/warning.js","../node_modules/yup/lib/Condition.js","../node_modules/yup/lib/Lazy.js","../node_modules/yup/lib/Reference.js","../node_modules/yup/lib/ValidationError.js","../node_modules/yup/lib/array.js","../node_modules/yup/lib/boolean.js","../node_modules/yup/lib/date.js","../node_modules/yup/lib/index.js","../node_modules/yup/lib/locale.js","../node_modules/yup/lib/mixed.js","../node_modules/yup/lib/number.js","../node_modules/yup/lib/object.js","../node_modules/yup/lib/setLocale.js","../node_modules/yup/lib/string.js","../node_modules/yup/lib/util/createValidation.js","../node_modules/yup/lib/util/inherits.js","../node_modules/yup/lib/util/isAbsent.js","../node_modules/yup/lib/util/isSchema.js","../node_modules/yup/lib/util/isodate.js","../node_modules/yup/lib/util/makePath.js","../node_modules/yup/lib/util/merge.js","../node_modules/yup/lib/util/printValue.js","../node_modules/yup/lib/util/reach.js","../node_modules/yup/lib/util/runValidations.js","../node_modules/yup/lib/util/sortByKeyOrder.js","../node_modules/yup/lib/util/sortFields.js","../node_modules/yup/node_modules/@babel/runtime/helpers/extends.js","../node_modules/yup/node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/yup/node_modules/@babel/runtime/helpers/interopRequireWildcard.js","../node_modules/yup/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/yup/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.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/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","global.ts","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","webpack://dte-portal/./src/components/routes/unexpectedError/UnexpectedErrorPage.module.css?ff1a","components/routes/unexpectedError/index.ts","components/routes/unexpectedError/UnexpectedErrorPage.tsx","components/errorBoundary/ErrorBoundary.tsx","components/errorBoundary/index.ts","../node_modules/jwt-decode/lib/atob.js","../node_modules/jwt-decode/lib/base64_url_decode.js","../node_modules/jwt-decode/lib/index.js","components/authentication/validateToken.ts","components/authentication/AuthenticationProvider.tsx","components/userData/UserDataProvider.tsx","webpack://dte-portal/./src/components/dataProtectionAgreement/DataProtectionAgreementDialog.module.css?7ed4","components/dataProtectionAgreement/index.ts","components/dataProtectionAgreement/DataProtectionAgreementDialog.tsx","components/login/schema.ts","components/login/attemptLogin.ts","webpack://dte-portal/./src/components/login/LoginPage.module.css?bcef","components/login/LoginPage.tsx","components/login/index.ts","components/assessments/moderator/index.ts","components/assessments/moderator/ModeratorPage.tsx","components/assessments/moderator/updateResults.ts","components/forgottenPassword/schema.ts","components/forgottenPassword/index.ts","components/forgottenPassword/ForgottenPasswordPage.tsx","components/forgottenPassword/requestPasswordReset.ts","components/resetPassword/schema.ts","components/resetPassword/ResetPasswordPage.tsx","components/resetPassword/resetPassword.ts","components/resetPassword/index.ts","components/resetPassword/ResetPasswordPageContainer.tsx","components/dashboard/containers/index.ts","components/dashboard/containers/MemberDetailFull.tsx","components/app/App.tsx","serviceWorker.ts","index.tsx"],"sourcesContent":["import AjaxErrorBoundary from './AjaxErrorBoundary';\r\n\r\nexport * from './types';\r\n\r\nexport default AjaxErrorBoundary;\r\n","import React from 'react';\r\nimport { IAjaxErrorBoundaryProps } from './types';\r\nimport BusyIndicator from '../../busyIndicator';\r\nimport ErrorList from '../../errorList';\r\n\r\nconst AjaxErrorBoundary: React.FC = ({\r\n busy,\r\n loadingText,\r\n errors,\r\n children,\r\n}) => {\r\n if (busy) {\r\n return ;\r\n }\r\n\r\n return (\r\n <>{errors.length > 0 ? : <>{children}}\r\n );\r\n};\r\n\r\nexport default AjaxErrorBoundary;\r\n","import React from 'react';\r\nimport { UnboundField } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const TextReadOnlyAnswer: React.FC = ({ name }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { QuestionTypes } from '../../../../constants';\r\nimport {\r\n CheckAnswer,\r\n DateTimeAnswer,\r\n IdentifiedTargetedCompletedSourceAnswer,\r\n NumberAnswer,\r\n ScoreAnswer,\r\n TextAnswer,\r\n TextReadOnlyAnswer,\r\n MultiLineTextAnswer,\r\n} from './answers';\r\nimport { FormGroup } from '../../../forms';\r\nimport { IDriverEvaluationReportQuestion } from '../types';\r\nimport { useState } from 'react';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\n\r\nconst ANSWER_COMPONENTS: { [key: number]: any } = {\r\n 0: TextReadOnlyAnswer,\r\n [QuestionTypes.Check]: CheckAnswer,\r\n [QuestionTypes.DateTime]: DateTimeAnswer,\r\n [QuestionTypes.IdentifiedTargetedCompletedSource]: IdentifiedTargetedCompletedSourceAnswer,\r\n [QuestionTypes.Number]: NumberAnswer,\r\n [QuestionTypes.Score]: ScoreAnswer,\r\n [QuestionTypes.Text]: TextAnswer,\r\n [QuestionTypes.TextReadonly]: TextReadOnlyAnswer,\r\n [QuestionTypes.TextMomo]: MultiLineTextAnswer\r\n};\r\n\r\nconst ShouldLabelBeDisplayedFor = (questionType: number) => {\r\n return questionType !== QuestionTypes.Check;\r\n};\r\n\r\nconst Question: React.FC = ({\r\n fileId,\r\n type,\r\n text,\r\n isRequired,\r\n isResultMaster,\r\n restrictions,\r\n enablestatus,\r\n needsCheckBoxToActivate\r\n}) => {\r\n const SpecificAnswer = ANSWER_COMPONENTS[type];\r\n\r\n const [enabled, setEnabled] = useState(false);\r\n\r\n return (\r\n \r\n {needsCheckBoxToActivate ? (\r\n
\r\n
\r\n {\r\n if (typeof (e) !== 'undefined') {\r\n setEnabled(e.checked ?? enabled);\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 Question;\r\n","import React from 'react';\r\nimport { CheckBox } from '../../../../formikBindings';\r\nimport { ICheckAnswerProps } from './types';\r\n\r\nexport const CheckAnswer: React.FC = ({ name, label, enablestatus }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { DatePicker } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const DateTimeAnswer: React.FC = ({ name, enablestatus }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { DropDownList } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const IdentifiedTargetedCompletedSourceAnswer: React.FC = ({\r\n name, enablestatus\r\n}) => ;\r\n","import React from 'react';\r\nimport { NumericTextBox } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const NumberAnswer: React.FC = ({ name, enablestatus }) => (\r\n \r\n);\r\n","import React from 'react';\r\nimport { DropDownList } from '../../../../formikBindings';\r\nimport { IAnswerProps } from './types';\r\n\r\nexport const ScoreAnswer: React.FC = ({ name, enablestatus }) => (\r\n \r\n);\r\n","import React, { useMemo } from 'react';\r\nimport { ITextAnswerProps } from './types';\r\nimport { TextBox, DropDownList } from '../../../../formikBindings';\r\nimport toSyncfusionDataSource from '../../../../../utils/toSyncfusionDataSource';\r\n\r\nexport const TextAnswer: React.FC = ({\r\n name,\r\n restrictions,\r\n enablestatus\r\n}) => {\r\n const memoizedDataSource = useMemo(() => {\r\n return restrictions ? toSyncfusionDataSource(restrictions) : [];\r\n }, [restrictions]);\r\n\r\n return (\r\n <>\r\n {restrictions?.length ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { IAnswerProps } from './types';\r\nimport { MultilineTextBox } from '../../../../formikBindings';\r\n\r\nexport const MultiLineTextAnswer: React.FC = ({\r\n name,\r\n enablestatus\r\n}) => {\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n","import Question from './Question';\r\n\r\nexport default Question;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { IDriverEvaluationReportProps, IDynamicForm, Answer } from './types';\r\nimport { Formik, Form } from 'formik';\r\nimport { FormSectionHeading, ActionButton } from '../../forms';\r\nimport Question from './question';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport createDynamicForm from './createDynamicForm';\r\nimport { QuestionTypes } from '../../../constants';\r\nimport toUtcDate from '../../../utils/toUtcDate';\r\n\r\nconst DriverEvaluationReport: React.FC = ({\r\n busy,\r\n isAssessor,\r\n attendanceConfirmed,\r\n resultsSubmitted,\r\n groups,\r\n pdfUrl,\r\n requiresAttention,\r\n onReportUpdated\r\n}) => {\r\n const [dynamicForm, setDynamicForm] = useState();\r\n\r\n useEffect(() => {\r\n if (groups) {\r\n setDynamicForm(createDynamicForm(groups));\r\n }\r\n }, [groups]);\r\n\r\n const handleUpdateResults = (values: any, complete: boolean): void => {\r\n if (!dynamicForm?.fieldMappings) return;\r\n\r\n const results: Array = [];\r\n\r\n Object.keys(values).forEach(key => {\r\n const questionFileId: number = Number.parseInt(key);\r\n const fieldMapping = dynamicForm.fieldMappings[questionFileId];\r\n\r\n const result: Answer = { fileId: questionFileId, answer: null, fieldtype: fieldMapping.type};\r\n\r\n if (values[questionFileId] !== null) {\r\n switch (fieldMapping.type) {\r\n case QuestionTypes.DateTime:\r\n result.answer =\r\n values[key] instanceof Date\r\n ? toUtcDate(values[key]).toISOString()\r\n : values[key];\r\n break;\r\n\r\n case QuestionTypes.Check:\r\n result.answer = values[key] ? '1' : '0';\r\n break;\r\n\r\n default:\r\n result.answer = values[key].toString();\r\n }\r\n }\r\n\r\n results.push(result);\r\n });\r\n\r\n onReportUpdated(results, complete);\r\n };\r\n\r\n return (\r\n <>\r\n {dynamicForm?.initialValues && (\r\n handleUpdateResults(values, true)}\r\n >\r\n {({ values }) => (\r\n
\r\n \r\n {groups.map(group => (\r\n
\r\n {group.heading}\r\n {group.questions.map(question => (\r\n \r\n ))}\r\n
\r\n ))}\r\n \r\n {attendanceConfirmed && (\r\n
\r\n {pdfUrl && (\r\n window.open(pdfUrl, '_blank')}\r\n >\r\n Show PDF\r\n \r\n )}\r\n {isAssessor && !resultsSubmitted && !requiresAttention && (\r\n <>\r\n handleUpdateResults(values, false)}\r\n >\r\n Update Results\r\n \r\n \r\n Submit Results\r\n \r\n \r\n )}\r\n
\r\n )}\r\n {!attendanceConfirmed &&

Attendance has not been confirmed

}\r\n {resultsSubmitted &&

This report has been submitted

}\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default DriverEvaluationReport;\r\n","import {\r\n IDynamicForm,\r\n FieldMapping,\r\n IDriverEvaluationReportGroup,\r\n} from './types';\r\nimport * as Yup from 'yup';\r\n\r\nexport default (groups: Array): IDynamicForm => {\r\n const initialValues: any = {};\r\n const schemaDefinition: Yup.ObjectSchemaDefinition = {};\r\n const fieldMappings: FieldMapping = {};\r\n\r\n for (let group of groups) {\r\n for (let question of group.questions) {\r\n const name = question.fileId.toString();\r\n\r\n initialValues[name] = question.answer;\r\n\r\n if (question.isRequired || question.isResultMaster) {\r\n schemaDefinition[name] = Yup.string()\r\n .required('This is a required question')\r\n .nullable();\r\n }\r\n\r\n fieldMappings[name] = { fileId: question.fileId, type: question.type };\r\n }\r\n }\r\n\r\n return {\r\n initialValues,\r\n validationSchema: Yup.object(schemaDefinition),\r\n fieldMappings,\r\n };\r\n};\r\n","import { createContext } from 'react';\r\nimport { IAuthenticationContext } from './types';\r\n\r\nconst AuthenticationContext = createContext(\r\n undefined,\r\n);\r\n\r\nexport default AuthenticationContext;\r\n","import useAuthentication from './useAuthentication';\r\n\r\nexport default useAuthentication;\r\n","import { useContext } from 'react';\r\nimport { IAuthenticationContext } from './types';\r\nimport AuthenticationContext from './AuthenticationContext';\r\n\r\nconst useAuthentication = (): IAuthenticationContext => {\r\n const context = useContext(AuthenticationContext);\r\n\r\n if (!context) {\r\n throw new Error('This component must be a component');\r\n }\r\n\r\n return context;\r\n};\r\n\r\nexport default useAuthentication;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"BusyIndicator_container__15bYj\",\"fullScreen\":\"BusyIndicator_fullScreen__hQkrm\",\"text\":\"BusyIndicator_text__YGaso\"};","import React from 'react';\r\nimport { IBusyIndicatorProps } from './types';\r\nimport styles from './BusyIndicator.module.css';\r\n\r\nconst BusyIndicator: React.FC = ({ text, fullScreen }) => {\r\n return (\r\n
\r\n \r\n {text}...\r\n
\r\n );\r\n};\r\n\r\nBusyIndicator.defaultProps = {\r\n fullScreen: false,\r\n};\r\n\r\nexport default BusyIndicator;\r\n","import BusyIndicator from './BusyIndicator';\r\n\r\nexport * from './types';\r\n\r\nexport default BusyIndicator;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"list\":\"ErrorList_list__vCUIO\"};","import ErrorList from './ErrorList';\r\n\r\nexport * from './types';\r\n\r\nexport default ErrorList;\r\n","import React from 'react';\r\nimport { IErrorListProps } from './types';\r\nimport styles from './ErrorList.module.css';\r\n\r\nconst ErrorList: React.FC = ({ className, errors }) => {\r\n if (errors.length === 0) return null;\r\n\r\n return (\r\n
    \r\n {errors.map(error => (\r\n
  • {error}
  • \r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default ErrorList;\r\n","import React from 'react';\r\nimport { useField } from 'formik';\r\nimport { IFormikFieldProps } from './types';\r\nimport { CheckBoxModel } from '@syncfusion/ej2-buttons';\r\nimport { DefaultHtmlAttributes } from '@syncfusion/ej2-react-base';\r\nimport { CheckBoxComponent } from '@syncfusion/ej2-react-buttons';\r\n\r\nexport type CheckBoxProps = IFormikFieldProps &\r\n CheckBoxModel &\r\n DefaultHtmlAttributes;\r\n\r\nexport const CheckBox: React.FC = ({\r\n name,\r\n validate,\r\n ...rest\r\n}) => {\r\n const [field, , helpers] = useField(name);\r\n\r\n return (\r\n {\r\n if (typeof e === 'undefined' || !e.event) return;\r\n helpers.setValue(e.checked);\r\n }}\r\n onBlur={() => helpers.setTouched(true)}\r\n checked={field.value == '1'}\r\n {...rest}\r\n />\r\n );\r\n};\r\n","import React from 'react';\r\nimport { useField } from 'formik';\r\nimport { IFormikFieldProps } from './types';\r\nimport { DatePickerModel } from '@syncfusion/ej2-calendars';\r\nimport { DefaultHtmlAttributes } from '@syncfusion/ej2-react-base';\r\nimport { DatePickerComponent } from '@syncfusion/ej2-react-calendars';\r\n\r\nexport type DatePickerProps = IFormikFieldProps &\r\n DatePickerModel &\r\n DefaultHtmlAttributes;\r\n\r\n//export const DatePicker: React.FC = props => {\r\nexport const DatePicker: React.FC = props => {\r\n const [field, , helpers] = useField(props);\r\n\r\n return (\r\n {\r\n // no event args\r\n if (!e) return;\r\n\r\n if (!e.value) {\r\n // new value is null\r\n helpers.setValue(null);\r\n return;\r\n }\r\n\r\n let currentValue = field.value;\r\n var currentDate;\r\n var newDate;\r\n var newValue;\r\n\r\n if (!currentValue) {\r\n // current value is null\r\n helpers.setValue(e.value);\r\n return;\r\n }\r\n\r\n if (currentValue instanceof Date) {\r\n // current value is a date, get the ISO string representation\r\n currentDate = new Date(currentValue);\r\n currentValue = currentDate.toISOString().substring(0, 10);\r\n }\r\n\r\n if (e.value instanceof Date) {\r\n // current value is a date, get the ISO string representation\r\n newDate = new Date(e.value);\r\n newDate = new Date(newDate?.getTime() - (newDate?.getTimezoneOffset() * 60000));\r\n newValue = newDate.toISOString().substring(0, 10);\r\n }\r\n\r\n if (currentValue === newValue) {\r\n // values are the same\r\n return;\r\n }\r\n\r\n helpers.setValue(newDate);\r\n }}\r\n />\r\n );\r\n};\r\n","import React from 'react';\r\nimport { useField } from 'formik';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { DropDownListModel } from '@syncfusion/ej2-dropdowns';\r\nimport { DefaultHtmlAttributes } from '@syncfusion/ej2-react-base';\r\nimport { DropDownListTypecast } from '@syncfusion/ej2-react-dropdowns';\r\nimport { IFormikFieldProps } from './types';\r\nimport { fields } from '../../utils/toSyncfusionDataSource';\r\n\r\nexport type DropDownListProps = IFormikFieldProps &\r\n ((DropDownListModel & DefaultHtmlAttributes) | DropDownListTypecast);\r\n\r\nexport const DropDownList: React.FC = ({\r\n name,\r\n ...rest\r\n}) => {\r\n const [field, , helpers] = useField(name);\r\n\r\n\r\n return (\r\n {\r\n if (typeof e === 'undefined' || !e.e) return;\r\n helpers.setValue(e.value);\r\n }}\r\n blur={() => helpers.setTouched(true)}\r\n value={field.value}\r\n fields={fields}\r\n {...rest}\r\n />\r\n );\r\n};\r\n","import React from 'react';\r\nimport { useField } from 'formik';\r\nimport { NumericTextBoxModel } from '@syncfusion/ej2-inputs';\r\nimport { DefaultHtmlAttributes } from '@syncfusion/ej2-react-base';\r\nimport { IFormikFieldProps } from './types';\r\nimport { NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\n\r\nexport type NumericTextBoxProps = IFormikFieldProps &\r\n NumericTextBoxModel &\r\n DefaultHtmlAttributes;\r\n\r\nexport const NumericTextBox: React.FC = (props) => {\r\n const [field] = useField(props);\r\n\r\n return ;\r\n};\r\n","import React, { useRef, useLayoutEffect } from 'react';\r\nimport { useField } from 'formik';\r\nimport { TextBoxModel } from '@syncfusion/ej2-inputs';\r\nimport { DefaultHtmlAttributes } from '@syncfusion/ej2-react-base';\r\nimport { IFormikFieldProps } from './types';\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\n\r\nexport type TextBoxProps = IFormikFieldProps &\r\n TextBoxModel &\r\n DefaultHtmlAttributes;\r\n\r\nexport const TextBox: React.FC = props => {\r\n const [field] = useField(props);\r\n\r\n return ;\r\n};\r\n\r\nexport type MultilineTextBoxProps = IFormikFieldProps &\r\n TextBoxModel &\r\n DefaultHtmlAttributes & { rows?: number };\r\n\r\nexport const MultilineTextBox: React.FC = props => {\r\n const [field] = useField(props);\r\n const { rows } = props;\r\n const element = useRef(null);\r\n\r\n useLayoutEffect(() => {\r\n if (element?.current && rows) {\r\n element.current.addAttributes({ 'rows': rows.toString() });\r\n }\r\n }, [rows]);\r\n\r\n return (\r\n \r\n );\r\n};","import React from 'react';\r\nimport { useField } from 'formik';\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\n\r\nexport const UnboundField: React.FC = (props: any) => {\r\n const [field] = useField(props);\r\n\r\n return ;\r\n};\r\n","export * from './CheckBox';\r\nexport * from './DatePicker';\r\nexport * from './DropDownList';\r\nexport * from './TextBox';\r\nexport * from './NumericTextBox';\r\nexport * from './UnboundField';\r\n","import React from 'react';\r\nimport { ButtonModel } from '@syncfusion/ej2-buttons';\r\nimport { DefaultHtmlAttributes } from '@syncfusion/ej2-react-base';\r\nimport { IActionButtonProps } from './types';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\n\r\nexport const ActionButton: React.FC = ({ busy, children, ...rest }) => {\r\n return (\r\n \r\n {busy && }\r\n {children}\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { useFormikContext } from 'formik';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\n\r\nexport const CancelButton: React.FC<{ children: React.ReactNode }> = ({ children }) => {\r\n const { dirty, isSubmitting, resetForm } = useFormikContext();\r\n\r\n return (\r\n resetForm()}\r\n >\r\n {children}\r\n \r\n );\r\n};\r\n","export * from './CancelButton';\r\n","import React from 'react';\r\nimport { TextBoxComponent } from '@syncfusion/ej2-react-inputs';\r\nimport { IDisplayFormGroupProps } from './types';\r\n\r\nexport const DisplayFormGroup: React.FC = ({\r\n colSize,\r\n label,\r\n name,\r\n value,\r\n}) => (\r\n
\r\n \r\n \r\n
\r\n);\r\n","import React from 'react';\r\nimport useMediaQuery from 'beautiful-react-hooks/useMediaQuery';\r\n\r\nexport const EmptyLabel: React.FC = () => {\r\n const showLabel = useMediaQuery('(min-width: 768px)');\r\n\r\n return <>{showLabel && };\r\n};\r\n","export * from './EmptyLabel';\r\n","// extracted by mini-css-extract-plugin\nexport default {\"required\":\"FormGroup_required__bIt8N\"};","import React from 'react';\r\nimport { ErrorMessage } from 'formik';\r\nimport { IFormGroupProps } from './types';\r\nimport styles from './FormGroup.module.css';\r\n\r\nexport const FormGroup: React.FC = ({\r\n className,\r\n iconClassName,\r\n label,\r\n name,\r\n required,\r\n children,\r\n}) => {\r\n return (\r\n
\r\n {iconClassName && }\r\n {label && (\r\n \r\n )}\r\n {children}\r\n \r\n
\r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"FormHeading_container__9biAP\",\"heading\":\"FormHeading_heading__fX85i\",\"subHeading\":\"FormHeading_subHeading__DbpA+\",\"closeButton\":\"FormHeading_closeButton__hloJK\"};","import React from 'react';\r\nimport { IFormHeadingProps } from './types';\r\nimport styles from './FormHeading.module.css';\r\n\r\nexport const FormHeading: React.FC = ({\r\n heading,\r\n subHeading,\r\n secondSubHeading,\r\n className,\r\n onClose,\r\n}) => {\r\n return (\r\n
\r\n
\r\n {onClose && }\r\n {heading}\r\n
\r\n {subHeading && {subHeading}}\r\n {secondSubHeading && (\r\n {secondSubHeading}\r\n )}\r\n
\r\n );\r\n};\r\n","// extracted by mini-css-extract-plugin\nexport default {\"text\":\"FormSectionHeading_text__GRqqw\"};","import React from 'react';\r\nimport styles from './FormSectionHeading.module.css';\r\n\r\nexport const FormSectionHeading: React.FC<{ children: React.ReactNode }> = ({\r\n children,\r\n}) =>
{children}
;\r\n","export * from './formGroup';\r\nexport * from './formHeading';\r\nexport * from './formSectionHeading';\r\nexport * from './submitButton';\r\nexport * from './cancelButton';\r\nexport * from './displayFormGroup';\r\nexport * from './emptyLabel';\r\nexport * from './actionButton';\r\n","import React from 'react';\r\nimport { useFormikContext } from 'formik';\r\n\r\nexport const SubmitButton: React.FC<{ children: React.ReactNode }> = ({ children }) => {\r\n const { isSubmitting, submitForm } = useFormikContext();\r\n\r\n const handleClick = () => {\r\n if (isSubmitting) return;\r\n\r\n submitForm();\r\n };\r\n\r\n return (\r\n \r\n {isSubmitting && }\r\n {children}\r\n \r\n );\r\n};\r\n","export * from './useDataFetcher';\r\nexport * from './useBatchDataFetcher';\r\nexport * from './useIsFirstRender';\r\n","import { useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\nimport { instance } from '../../services/api';\r\nimport makeCancelable from '../../utils/makeCancelable';\r\n\r\nconst initialState = {\r\n busy: true,\r\n data: [],\r\n errors: [],\r\n};\r\n\r\nexport const useBatchDataFetcher = (\r\n urls: Array,\r\n config?: {\r\n transformers: Array<(data: any) => any>;\r\n finalTransformation?: (data: Array) => any;\r\n },\r\n): { busy: boolean; data: Array; errors: Array } => {\r\n const [state, setState] = useState(initialState);\r\n\r\n useEffect(() => {\r\n const source = axios.CancelToken.source();\r\n\r\n setState(initialState);\r\n\r\n const cancelableRequest = makeCancelable(\r\n axios.all(\r\n urls.map(url =>\r\n instance.get(url, {\r\n cancelToken: source.token,\r\n }),\r\n ),\r\n ),\r\n source,\r\n );\r\n\r\n const applyTransformations = (data: Array): any => {\r\n if (!config) return data;\r\n\r\n const transformedData = data.map((r: any, index: number) =>\r\n transformData(r, index),\r\n );\r\n\r\n return config.finalTransformation\r\n ? config.finalTransformation(transformedData)\r\n : transformedData;\r\n };\r\n\r\n const transformData = (data: any, index: number): any => {\r\n if (!config || !config.transformers[index]) return data;\r\n\r\n return config.transformers[index](data);\r\n };\r\n\r\n cancelableRequest.promise\r\n .then(response =>\r\n setState({\r\n busy: false,\r\n data: applyTransformations(response.map((r: any) => r.data)),\r\n errors: [],\r\n }),\r\n )\r\n .catch(errors => {\r\n if (!errors.isCanceled) {\r\n setState({ busy: false, data: [], errors });\r\n }\r\n });\r\n\r\n return () => {\r\n cancelableRequest.cancel();\r\n };\r\n }, [urls, config]);\r\n\r\n return {\r\n busy: state.busy,\r\n data: state.data,\r\n errors: state.errors,\r\n };\r\n};\r\n","import { useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\nimport { instance } from '../../services/api';\r\nimport makeCancelable from '../../utils/makeCancelable';\r\n\r\nconst initialState = {\r\n busy: true,\r\n data: undefined,\r\n errors: [],\r\n};\r\n\r\nexport const useDataFetcher = (\r\n url: string,\r\n config?: { transformer: (data: any) => any },\r\n): { busy: boolean; data: any; errors: Array } => {\r\n const [state, setState] = useState(initialState);\r\n\r\n useEffect(() => {\r\n if (url) {\r\n const source = axios.CancelToken.source();\r\n\r\n setState(initialState);\r\n\r\n const cancelableRequest = makeCancelable(\r\n instance.get(url, {\r\n cancelToken: source.token,\r\n }),\r\n source,\r\n );\r\n\r\n const transformData = (data: any): any => {\r\n if (!config || !config.transformer) return data;\r\n\r\n return config.transformer(data);\r\n };\r\n\r\n cancelableRequest.promise\r\n .then(response =>\r\n setState({\r\n busy: false,\r\n data: transformData(response.data),\r\n errors: [],\r\n }),\r\n )\r\n .catch(errors => {\r\n if (!errors.isCanceled) {\r\n setState({ busy: false, data: undefined, errors });\r\n }\r\n });\r\n\r\n return () => {\r\n cancelableRequest.cancel();\r\n };\r\n }\r\n }, [url, config]);\r\n\r\n return {\r\n busy: state.busy,\r\n data: state.data,\r\n errors: state.errors,\r\n };\r\n};\r\n","import { useRef } from 'react'\r\n\r\n//https://github.com/antonioru/beautiful-react-hooks/blob/master/src/useIsFirstRender.ts\r\n\r\nexport const useIsFirstRender = () => {\r\n const isFirstRenderRef = useRef(true)\r\n\r\n if (isFirstRenderRef.current) {\r\n isFirstRenderRef.current = false\r\n\r\n return true\r\n }\r\n\r\n return isFirstRenderRef.current\r\n}\r\n","import React from 'react';\r\nimport { FormGroup, FormSectionHeading } from '../../../forms';\r\nimport { DatePicker, TextBox, UnboundField } from '../../../formikBindings';\r\n\r\nconst ProfileTab: React.FC = () => (\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\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 IAM Membership\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\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\n
\r\n
\r\n);\r\n\r\nexport default ProfileTab;\r\n","import React from 'react';\r\nimport { FormGroup } from '../../../forms';\r\nimport { CheckBox, TextBox, DropDownList } from '../../../formikBindings';\r\nimport { IAddressTabProps } from './types';\r\nimport { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';\r\nimport { ChangeEventArgs } from '@syncfusion/ej2-dropdowns';\r\nimport { fields } from '../../../../utils/toSyncfusionDataSource';\r\n\r\nconst AddressTab: React.FC = ({\r\n addressTypes,\r\n selectedAddressIndex,\r\n onChangeSelectedAddressIndex,\r\n counties\r\n}) => {\r\n const handleAddressTypeChange = (args: ChangeEventArgs | undefined) => {\r\n if (typeof args === 'undefined' || !args.e) return;\r\n\r\n onChangeSelectedAddressIndex(+args.value);\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\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\n\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default AddressTab;\r\n","import React from 'react';\r\nimport { FormGroup, FormSectionHeading } from '../../../forms';\r\nimport { TextBox, DatePicker } from '../../../formikBindings';\r\nimport { IGroupTabProps } from './types';\r\nimport {\r\n ColumnDirective,\r\n ColumnsDirective,\r\n Filter,\r\n GridComponent,\r\n Inject,\r\n Sort,\r\n} from '@syncfusion/ej2-react-grids';\r\n\r\nconst GroupTab: React.FC = ({ testClassifications, groupSpecificFieldLabels }: IGroupTabProps) => {\r\n const dataSource = testClassifications.map(classification => ({\r\n description: classification,\r\n }));\r\n\r\n return (\r\n
\r\n
\r\n label.fieldId === 432)?.label || \"Member Ref 1\"}\r\n name=\"group.memRef1\"\r\n >\r\n \r\n \r\n label.fieldId === 433)?.label || \"Member Ref 2\"}\r\n name=\"group.memRef2\"\r\n >\r\n \r\n \r\n
\r\n\r\n
\r\n label.fieldId === 434)?.label || \"Enrol Date\"}\r\n name=\"group.enrolDate\"\r\n >\r\n \r\n \r\n label.fieldId === 435)?.label || \"Expiry Date\"}\r\n name=\"group.expiryDate\"\r\n >\r\n \r\n \r\n
\r\n\r\n label.fieldId === 436)?.label || \"Member Value\"}\r\n name=\"group.memValue\">\r\n \r\n \r\n label.fieldId === 437)?.label || \"How Heard\"}\r\n name=\"group.howHeard\">\r\n \r\n \r\n label.fieldId === 438)?.label || \"How Joined\"}\r\n name=\"group.howJoined\">\r\n \r\n \r\n\r\n
\r\n label.fieldId === 439)?.label || \"Tag 1\"}\r\n name=\"group.tag1\">\r\n \r\n \r\n label.fieldId === 440)?.label || \"Tag 2\"}\r\n name=\"group.tag2\">\r\n \r\n \r\n
\r\n\r\n label.fieldId === 441)?.label || \"Ref Date\"}\r\n name=\"group.refDate\">\r\n \r\n \r\n\r\n IAM Test Classifications\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 GroupTab;\r\n","import * as Yup from 'yup';\r\n\r\nexport default Yup.object({\r\n groupRoleDescId: Yup.string().required('Please select a link type'),\r\n});\r\n","import React, { useState } from 'react';\r\nimport { Formik, Form } from 'formik';\r\nimport AjaxErrorBoundary from '../../../../../ajax/errorBoundary';\r\nimport { FormGroup, ActionButton } from '../../../../../forms';\r\nimport { DropDownList } from '../../../../../formikBindings';\r\nimport Modal from 'react-modal';\r\nimport ErrorList from '../../../../../errorList';\r\nimport { useDataFetcher } from '../../../../../hooks';\r\nimport toSyncfusionDataSource from '../../../../../../utils/toSyncfusionDataSource';\r\nimport { DropDownItem } from '../../../../../types';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { IAddLinkModalProps, IAddLinkModalFormValues } from './types';\r\nimport createGroupMemberLink from './createGroupMemberLink';\r\nimport schema from './schema';\r\nimport useUserData from '../../../../../userData';\r\n\r\nconst transformDropDownData = (data: {\r\n items: Array;\r\n}): Array<{ [key: string]: Object }> => toSyncfusionDataSource(data.items);\r\n\r\nconst config = {\r\n transformer: transformDropDownData,\r\n};\r\n\r\nconst initialValues: IAddLinkModalFormValues = {\r\n groupRoleDescId: '',\r\n};\r\n\r\nexport const AddLinkModal: React.FC = ({\r\n organisationFileId,\r\n contactFileId,\r\n onAdded,\r\n onCancel,\r\n}) => {\r\n const { getSelectedOrganisationName } = useUserData();\r\n\r\n const { busy, data, errors } = useDataFetcher('/api/groupRoles', config);\r\n const [ajaxErrors, setAjaxErrors] = useState>([]);\r\n const [isAdding, setIsAdding] = useState(false);\r\n\r\n return (\r\n \r\n
\r\n

Add Group Member Link

\r\n \r\n {\r\n setAjaxErrors([]);\r\n setIsAdding(true);\r\n\r\n createGroupMemberLink({\r\n contactFileId,\r\n organisationFileId,\r\n groupRoleDescId: +values.groupRoleDescId,\r\n })\r\n .then(() => {\r\n // get organisation name\r\n const organisationName = getSelectedOrganisationName();\r\n\r\n // get role description\r\n const roleDescription = data.find(\r\n (entry: any) => entry.id === values.groupRoleDescId,\r\n ).item.displayValue;\r\n\r\n onAdded();\r\n })\r\n .catch(setAjaxErrors)\r\n .finally(() => setIsAdding(false));\r\n }}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n \r\n Cancel\r\n \r\n \r\n Continue\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n","import { AxiosPromise } from 'axios';\r\nimport { ICreateGroupMemberLinkCommand } from './types';\r\nimport { instance } from '../../../../../../services/api';\r\n\r\nexport default (data: ICreateGroupMemberLinkCommand): AxiosPromise =>\r\n instance.post('api/localGroupMemberDetails/groupMemberLinks', data);\r\n","import React from 'react';\r\nimport Modal from 'react-modal';\r\nimport { IDeleteLinkConfirmationModalProps } from './types';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\n\r\nexport const DeleteLinkConfirmationModal: React.FC = ({\r\n hasPermission,\r\n onConfirm,\r\n onCancel,\r\n contactLinksCount\r\n}) => (\r\n \r\n
\r\n

Member Group Link

\r\n {hasPermission ? (\r\n
\r\n

\r\n Do you wish to remove this link (Group Role) between member and the Local Group?\r\n

\r\n {contactLinksCount === 1 &&\r\n

\r\n WARNING: Deleting the last link will mark this contacts group address as inactive.\r\n

\r\n }\r\n
\r\n ) : (\r\n
\r\n

\r\n You are not authorised to remove a membership link belonging to\r\n another Group.\r\n

\r\n
\r\n )}\r\n
\r\n \r\n {hasPermission ? 'No' : 'Close'}\r\n \r\n {hasPermission && (\r\n \r\n Yes\r\n \r\n )}\r\n
\r\n
\r\n
\r\n);\r\n","import * as Yup from 'yup';\r\n\r\nexport default Yup.object({\r\n reason: Yup.string().required('Please enter a reason'),\r\n});\r\n","import React, { useState } from 'react';\r\nimport Modal from 'react-modal';\r\nimport { IDeleteLinkModalProps } from './types';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { Form, Formik } from 'formik';\r\nimport ErrorList from '../../../../../errorList';\r\nimport { FormGroup, ActionButton } from '../../../../../forms';\r\nimport { UnboundField, TextBox } from '../../../../../formikBindings';\r\nimport schema from './schema';\r\nimport deleteGroupMemberLink from './deleteGroupMemberLink';\r\n\r\nexport const DeleteLinkModal: React.FC = ({\r\n addressFileId,\r\n groupRoleDescId,\r\n contactId,\r\n name,\r\n onCancel,\r\n onDelete,\r\n}) => {\r\n const [ajaxErrors, setAjaxErrors] = useState>([]);\r\n const [isDeleting, setIsDeleting] = useState(false);\r\n\r\n return (\r\n \r\n
\r\n

Group Member Deletion

\r\n {\r\n setAjaxErrors([]);\r\n setIsDeleting(true);\r\n\r\n deleteGroupMemberLink({\r\n addressFileId,\r\n groupRoleDescId,\r\n reason: values.reason,\r\n })\r\n .then(onDelete)\r\n .catch(setAjaxErrors)\r\n .finally(() => setIsDeleting(false));\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 Cancel\r\n \r\n \r\n Delete\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n","import { AxiosPromise } from 'axios';\r\nimport { IDeleteGroupMemberLinkCommand } from './types';\r\nimport { instance } from '../../../../../../services/api';\r\n\r\nexport default (data: IDeleteGroupMemberLinkCommand): AxiosPromise =>\r\n instance.post('api/localGroupMemberDetails/groupMemberLinks/delete', data);\r\n","import React, { useRef, useState } from 'react';\r\nimport ErrorList from '../../../errorList';\r\nimport {\r\n ColumnDirective,\r\n ColumnsDirective,\r\n Filter,\r\n GridComponent,\r\n Inject,\r\n Sort,\r\n Toolbar,\r\n} from '@syncfusion/ej2-react-grids';\r\nimport { RowSelectEventArgs } from '@syncfusion/ej2-grids';\r\nimport {\r\n AddLinkModal,\r\n DeleteLinkConfirmationModal,\r\n DeleteLinkModal,\r\n} from './modals';\r\nimport { ILink } from '../../../myDetails/form';\r\nimport { ILinksTabProps, IDeleteLinkState } from './types';\r\nimport useUserData from '../../../userData';\r\nimport reloadLinks from '../edit/reloadLinks';\r\n\r\nconst AddLinkButtonId: string = 'AddLink';\r\nconst DeleteLinkButtonId: string = 'DeleteLink';\r\n\r\nconst initialDeleteLinkState: IDeleteLinkState = {\r\n active: false,\r\n confirmed: false,\r\n};\r\n\r\nconst LinksTab: React.FC = ({\r\n fileId,\r\n groupId,\r\n contactId,\r\n name,\r\n initialValues,\r\n}) => {\r\n const gridElement = useRef(null);\r\n\r\n const { selectedOrganisationFileId } = useUserData();\r\n\r\n const [ajaxErrors, setAjaxErrors] = useState>([]);\r\n const [links, setLinks] = useState>(initialValues);\r\n const [selectedLink, setSelectedLink] = useState(null);\r\n\r\n const [addingLink, setAddingLink] = useState(false);\r\n const [deleteLinkState, setDeleteLinkState] = useState(\r\n initialDeleteLinkState,\r\n );\r\n\r\n const handleRowClick = (args: RowSelectEventArgs | undefined) => {\r\n if (typeof args === 'undefined' || !args.data) return;\r\n\r\n const link = args.data as ILink;\r\n\r\n setSelectedLink(link);\r\n };\r\n\r\n const handleToolbarButtonClick = (args: any) => {\r\n if (!gridElement) return;\r\n\r\n if (args.item.id === AddLinkButtonId) {\r\n setAddingLink(true);\r\n } else if (args.item.id === DeleteLinkButtonId && selectedLink !== null) {\r\n setDeleteLinkState({ ...initialDeleteLinkState, active: true });\r\n }\r\n };\r\n\r\n const reloadData = () => {\r\n setAjaxErrors([]);\r\n setSelectedLink(null);\r\n\r\n reloadLinks(fileId, groupId)\r\n .then(response => setLinks(response.data))\r\n .catch(setAjaxErrors);\r\n };\r\n\r\n const handleRoleAdded = (): void => {\r\n setAddingLink(false);\r\n reloadData();\r\n };\r\n\r\n const handleRowDeleted = (): void => {\r\n setDeleteLinkState(initialDeleteLinkState);\r\n reloadData();\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 {addingLink && (\r\n setAddingLink(false)}\r\n />\r\n )}\r\n {selectedLink &&\r\n deleteLinkState.active &&\r\n (deleteLinkState.confirmed ? (\r\n setDeleteLinkState(initialDeleteLinkState)}\r\n onDelete={handleRowDeleted}\r\n />\r\n ) : (\r\n \r\n setDeleteLinkState({ ...deleteLinkState, confirmed: true })\r\n }\r\n onCancel={() => setDeleteLinkState(initialDeleteLinkState)}\r\n contactLinksCount={links.length}\r\n />\r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default LinksTab;\r\n","import { AxiosPromise } from 'axios';\r\nimport { instance } from '../../../../services/api';\r\n\r\nexport default (contactFileId: number, groupId: number): AxiosPromise =>\r\n instance.get(`api/localGroupMemberDetails/${groupId}/${contactFileId}/groupMemberLinksForLocalGroup`);\r\n","import {\r\n ILocalGroupMemberDetailsFormValues,\r\n IAddress,\r\n IGroup,\r\n IUpdatableMember,\r\n IUpdatableAddress,\r\n IUpdateCommand,\r\n} from './types';\r\nimport isDifferent from '../../../../utils/isDifferent';\r\n\r\nconst identifyChanges = (\r\n initialValues: ILocalGroupMemberDetailsFormValues,\r\n values: ILocalGroupMemberDetailsFormValues,\r\n): IUpdateCommand => {\r\n const valuesToUpdate: IUpdateCommand = {\r\n fileId: values.fileId,\r\n groupId: values.groupId\r\n };\r\n\r\n // contact\r\n const originalContact = extractUpdatableContactFieldsFrom(initialValues);\r\n const currentContact = extractUpdatableContactFieldsFrom(values);\r\n\r\n if (isDifferent(originalContact, currentContact)) {\r\n valuesToUpdate.contact = currentContact;\r\n }\r\n\r\n const addressesToUpdate: Array = [];\r\n\r\n for (let index = 0; index < values.addresses.length; index += 1) {\r\n const originalAddress = extractUpdatableAddressFieldsFrom(\r\n initialValues.addresses[index],\r\n );\r\n const currentAddress = extractUpdatableAddressFieldsFrom(\r\n values.addresses[index],\r\n );\r\n\r\n if (isDifferent(originalAddress, currentAddress)) {\r\n addressesToUpdate.push(currentAddress);\r\n }\r\n }\r\n\r\n if (addressesToUpdate.length > 0) {\r\n valuesToUpdate.addresses = addressesToUpdate;\r\n }\r\n\r\n // group\r\n const originalGroup = extractUpdatableGroupFieldsFrom(initialValues);\r\n const currentGroup = extractUpdatableGroupFieldsFrom(values);\r\n\r\n if (isDifferent(originalGroup, currentGroup)) {\r\n valuesToUpdate.group = currentGroup;\r\n }\r\n\r\n return valuesToUpdate;\r\n};\r\n\r\nconst extractUpdatableContactFieldsFrom = (\r\n values: ILocalGroupMemberDetailsFormValues,\r\n): IUpdatableMember => ({\r\n dateOfBirth: values.dateOfBirth,\r\n mobile: values.mobile,\r\n email: values.email,\r\n});\r\n\r\nconst extractUpdatableAddressFieldsFrom = (\r\n address: IAddress,\r\n): IUpdatableAddress => ({\r\n fileId: address.fileId,\r\n premise: address.premise,\r\n street: address.street,\r\n district: address.district,\r\n town: address.town,\r\n county: address.county,\r\n postcode: address.postcode,\r\n telephone1: address.telephone1,\r\n telephone2: address.telephone2,\r\n email: address.email,\r\n mobile: address.mobile,\r\n});\r\n\r\nconst extractUpdatableGroupFieldsFrom = (\r\n values: ILocalGroupMemberDetailsFormValues,\r\n): IGroup => ({\r\n ...values.group,\r\n});\r\n\r\nexport default identifyChanges;\r\n","import * as Yup from 'yup';\r\n\r\nexport default Yup.object({\r\n email: Yup.string()\r\n .email('Invalid Email').nullable(),\r\n});\r\n","// EU1832 - TO - 12/09/2022\r\nexport const AddId: string = 'AddId';\r\nexport const DeleteId: string = 'DeleteId';\r\n\r\nexport const ToolbarDescriptions: { [key: string]: string } = {\r\n AddId: 'Add',\r\n DeleteId: 'Delete'\r\n};\r\n\r\nexport const GroupLinksToolbar: any = [\r\n {\r\n text: ToolbarDescriptions[AddId],\r\n tooltipText: ToolbarDescriptions[AddId],\r\n id: AddId\r\n },\r\n {\r\n text: ToolbarDescriptions[DeleteId],\r\n tooltipText: ToolbarDescriptions[DeleteId],\r\n id: DeleteId\r\n }\r\n];\r\n","import React, { useState } from \"react\";\r\nimport { IDeleteGroupLinkModelProps } from \"../../types\";\r\nimport Modal from 'react-modal';\r\nimport { ButtonComponent } from \"@syncfusion/ej2-react-buttons\";\r\nimport deleteGroupLink from \"./deleteGroupLink\";\r\nimport { DeleteId } from \"../../groupLinkGridToolbar\";\r\nimport ErrorList from \"../../../../../errorList\";\r\n\r\nconst DeleteGroupLinkModel: React.FC = ({ localGroupLinkFileId, setShowModel, handleComplete }) => {\r\n const [busy, setBusy] = useState(false);\r\n const [errors, setErrors] = useState>([]);\r\n\r\n const handleDeletion = () => {\r\n setBusy(true);\r\n \r\n deleteGroupLink(localGroupLinkFileId)\r\n .then(() => handleComplete(DeleteId))\r\n .catch((errors) => setErrors(errors))\r\n .finally(() => setBusy(false));\r\n }\r\n\r\n return (\r\n \r\n \r\n

Are you sure you want to delete this contact at local group link.

\r\n setShowModel(false)} disabled={busy}>\r\n Cancel\r\n \r\n handleDeletion()} disabled={busy}>\r\n Delete\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default DeleteGroupLinkModel;\r\n","import { instance } from '../../../../../../services/api';\r\n\r\n// EU1832 - TO - 08/09/2022\r\nexport default (contactAtLocalGroupLinkFileId: number) => {\r\n return instance.delete(`api/contactAtLocalGroupLinks/${contactAtLocalGroupLinkFileId}`);\r\n};\r\n","import React, { useState } from \"react\";\r\nimport { IAddGroupLinkModelProps } from \"../../types\";\r\nimport Modal from 'react-modal';\r\nimport { ButtonComponent } from \"@syncfusion/ej2-react-buttons\";\r\nimport { AddId } from \"../../groupLinkGridToolbar\";\r\nimport ErrorList from \"../../../../../errorList\";\r\nimport { FormGroup, FormHeading, SubmitButton } from \"../../../../../forms\";\r\nimport { Form, Formik } from \"formik\";\r\nimport addGroupLink from \"./addGroupLink\";\r\nimport { useDataFetcher } from \"../../../../../hooks\";\r\nimport AjaxErrorBoundary from \"../../../../../ajax/errorBoundary\";\r\nimport { ILocalGroupLink } from \"../../../../../settings/localGroupLinkMaintenance/types\";\r\nimport { DropDownList } from \"../../../../../formikBindings\";\r\n\r\nconst localGroupLinksTransformer = (localGroupLinks: Array): Array<{ [key: string]: Object }> => {\r\n return localGroupLinks.map(localGroupLink => ({ \r\n id: localGroupLink.fileId,\r\n item: {\r\n id: localGroupLink.fileId,\r\n displayValue: localGroupLink.description\r\n }\r\n }));\r\n}\r\n\r\nconst AddGroupLinkModel: React.FC = ({ contactFileId, groupId, setShowModel, handleComplete }) => {\r\n const [ajaxErrors, setAjaxErrors] = useState>([]);\r\n\r\n const {\r\n busy,\r\n errors,\r\n data\r\n } = useDataFetcher(`api/localGroupLinks/${groupId}`);\r\n\r\n return (\r\n \r\n \r\n \r\n {\r\n addGroupLink(values)\r\n .then(() => handleComplete(AddId))\r\n .catch(errors => setAjaxErrors(errors))\r\n .finally(() => setSubmitting(false));\r\n }}\r\n >\r\n {({ isSubmitting }) => (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n setShowModel(false)}>\r\n Cancel\r\n \r\n Save\r\n
\r\n \r\n )}\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nexport default AddGroupLinkModel;\r\n","import { instance } from '../../../../../../services/api';\r\nimport { ICreateContactAtLocalGroupCommand } from '../../types';\r\n\r\n// EU1832 - TO - 08/09/2022\r\nexport default (command: ICreateContactAtLocalGroupCommand) => {\r\n return instance.post('api/contactAtLocalGroupLinks/create', command);\r\n};\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport {\r\n ColumnDirective,\r\n ColumnsDirective,\r\n GridComponent,\r\n RowSelectEventArgs\r\n} from '@syncfusion/ej2-react-grids';\r\nimport { IContactAtLocalGroupLink, IGroupLinksTabProps } from './types';\r\nimport { AddId, DeleteId, GroupLinksToolbar } from './groupLinkGridToolbar';\r\nimport ErrorList from '../../../errorList';\r\nimport DeleteGroupLinkModel from './modals/deleteGroupLink/DeleteGroupLinkModel';\r\nimport { NotificationModal } from '../../../modals';\r\nimport AddGroupLinkModel from './modals/addGroupLink/AddGroupLinkModel';\r\nimport getLocalGroupMemberDetails from './getLocalGroupMemberDetails';\r\n\r\nconst GroupLinksTab: React.FC = ({ groupLinks, contactFileId, groupId, isGroupOfficer }) => {\r\n const [selectedToolbarOption, setSelectedToolbarOption] = useState();\r\n const [selectedContactAtLocalGroupLink, setSelectedContactAtLocalGroupLink] = useState({ fileId: 0, description: '' });\r\n\r\n const [showAddModel, setShowAddModel] = useState(false);\r\n const [showDeleteModel, setShowDeleteModel] = useState(false);\r\n\r\n const [gridError, setGridErrors] = useState>([]);\r\n const [ContactLocalgroupLinks, setContactLocalGroupLinks] = useState>();\r\n const [refreshLinks, setRefreshLinks] = useState(false);\r\n\r\n useEffect(() => {\r\n if (groupLinks) {\r\n setContactLocalGroupLinks(groupLinks);\r\n }\r\n\r\n if (refreshLinks) {\r\n getLocalGroupMemberDetails(groupId, contactFileId)\r\n .then(res => setContactLocalGroupLinks(res.data.groupLinks))\r\n .catch(errors => setGridErrors(errors));\r\n }\r\n }, [groupLinks, refreshLinks]);\r\n\r\n const handleRowClick = (args: RowSelectEventArgs | undefined) => {\r\n if (typeof args === 'undefined' || !args.data) return;\r\n\r\n if (args.isInteracted) {\r\n setSelectedContactAtLocalGroupLink(args.data as IContactAtLocalGroupLink);\r\n }\r\n };\r\n\r\n const gridElement = useRef(null);\r\n\r\n const handleToolbarClick = (args: any) => {\r\n if (!gridElement) return;\r\n\r\n switch (args.item.id) {\r\n case AddId:\r\n case DeleteId:\r\n setSelectedToolbarOption(args.item.id);\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (typeof(selectedToolbarOption) !== 'undefined')\r\n {\r\n setRefreshLinks(false);\r\n setGridErrors([]);\r\n \r\n if (selectedToolbarOption === AddId) {\r\n setShowAddModel(true);\r\n } else if (selectedToolbarOption === DeleteId && selectedContactAtLocalGroupLink.fileId !== 0) {\r\n setShowDeleteModel(true);\r\n } else if (selectedContactAtLocalGroupLink.fileId === 0 && selectedToolbarOption === DeleteId) {\r\n setGridErrors([\"You must select a contact at local group link to use the delete option.\"]);\r\n setSelectedToolbarOption(undefined);\r\n }\r\n }\r\n\r\n }, [selectedToolbarOption]);\r\n\r\n const [successMessage, setSuccessMessage] = useState(\"\");\r\n const [showSuccessModel, setShowSuccessModel] = useState(false);\r\n\r\n const handleComplete = (toolbarOption: string) => {\r\n if (toolbarOption === AddId) {\r\n setShowAddModel(false);\r\n setSuccessMessage(\"Contact at Local group link created.\");\r\n } else if (toolbarOption === DeleteId) {\r\n setShowDeleteModel(false);\r\n setSuccessMessage(\"Contact at Local group link deleted.\");\r\n }\r\n\r\n setShowSuccessModel(true);\r\n }\r\n \r\n return (\r\n
\r\n {!isGroupOfficer ? (\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {showAddModel && (\r\n \r\n )}\r\n {showDeleteModel && (\r\n \r\n )}\r\n {showSuccessModel && (\r\n {\r\n setShowSuccessModel(false);\r\n setRefreshLinks(true);\r\n }}\r\n />\r\n )}\r\n \r\n )}\r\n
\r\n )\r\n};\r\n\r\nexport default GroupLinksTab;\r\n","import { instance } from '../../../../services/api';\r\n\r\n// EU1832 - TO - 16/09/2022\r\nexport default (groupId: number, fileId: number) => {\r\n return instance.get(`/api/localGroupMemberDetails/${groupId}/${fileId}`);\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Formik, Form } from 'formik';\r\nimport { FormHeading, SubmitButton } from '../../../forms';\r\nimport { TabComponent } from '@syncfusion/ej2-react-navigations';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport {\r\n ILocalGroupMemberDetailsFormProps,\r\n ILocalGroupMemberDetailsFormValues,\r\n} from './types';\r\nimport { DropDownItem } from '../../../types';\r\nimport ErrorList from '../../../errorList';\r\nimport ProfileTab from './ProfileTab';\r\nimport AddressTab from './AddressTab';\r\nimport GroupTab from './GroupTab';\r\nimport LinksTab from './LinksTab';\r\nimport { RaiseMemberQueryModal } from '../../../modals/raiseMemberQuery';\r\nimport toSyncfusionDataSource from '../../../../utils/toSyncfusionDataSource';\r\nimport identifyChanges from './identifyChanges';\r\nimport schema from './schema';\r\nimport useUserData from '../../../userData';\r\nimport GroupLinksTab from './GroupLinksTab';\r\nimport formatName from '../../../../utils/formatName';\r\n\r\nconst LocalGroupMemberDetailsForm: React.FC = ({\r\n fileId,\r\n groupId,\r\n initialValues,\r\n promise,\r\n onSubmit,\r\n onClose,\r\n counties,\r\n isGroupOfficer\r\n}) => {\r\n const [originalValues, setOriginalValues] = useState<\r\n ILocalGroupMemberDetailsFormValues\r\n >(initialValues);\r\n const [ajaxErrors, setAjaxErrors] = useState>([]);\r\n const [addressTypes, setAddressTypes] = useState<\r\n Array<{ [key: string]: Object }>\r\n >([]);\r\n const [selectedAddressIndex, setSelectedAddressIndex] = useState(0);\r\n const [isRaisingQuery, setIsRaisingQuery] = useState(false);\r\n\r\n useEffect(() => {\r\n const listItems: Array = [];\r\n\r\n for (let index = 0; index < initialValues.addresses.length; index += 1) {\r\n listItems.push({\r\n id: index.toString(),\r\n displayValue: initialValues.addresses[index].addressType,\r\n });\r\n\r\n if (initialValues.addresses[index].default) {\r\n setSelectedAddressIndex(index);\r\n }\r\n }\r\n\r\n setAddressTypes(toSyncfusionDataSource(listItems));\r\n\r\n let surname = '';\r\n let forenames = '';\r\n let postName = '';\r\n\r\n initialValues.surname.split(' ').forEach((y: string) => surname += `${formatName(y)} `);\r\n initialValues.forenames.split(' ').forEach((y: string) => forenames += `${formatName(y)} `);\r\n initialValues.postName.split(' ').forEach((y: string) => postName += `${formatName(y)} `);\r\n\r\n initialValues.surname = surname;\r\n initialValues.forenames = forenames;\r\n initialValues.postName = postName;\r\n }, [initialValues]);\r\n\r\n const { selectedContactFileId } = useUserData(); // EU1921- TO - 18/08/2022\r\n\r\n return (\r\n {\r\n const valuesToUpdate = identifyChanges(originalValues, values);\r\n\r\n promise(valuesToUpdate)\r\n .then(() => {\r\n resetForm({ values });\r\n setOriginalValues(values);\r\n onSubmit(typeof valuesToUpdate.contact !== 'undefined');\r\n })\r\n .catch(errors => setAjaxErrors(errors))\r\n .finally(() => setSubmitting(false));\r\n }}\r\n >\r\n {({ values }) => (\r\n <>\r\n \r\n
\r\n \r\n \r\n
\r\n
Profile
\r\n
Address
\r\n
Group
\r\n
Links
\r\n
Group Links
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n setIsRaisingQuery(true)}\r\n >\r\n Raise Query\r\n \r\n Save\r\n \r\n\r\n {isRaisingQuery && (\r\n setIsRaisingQuery(false)}\r\n />\r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default LocalGroupMemberDetailsForm;\r\n","import LocalGroupMemberDetailsForm from './LocalGroupMemberDetailsForm';\r\n\r\nexport * from './types';\r\n\r\nexport default LocalGroupMemberDetailsForm;\r\n","import { AxiosPromise } from 'axios';\r\nimport { IUpdateCommand } from '../form';\r\nimport { instance } from '../../../../services/api';\r\n\r\nconst updateLocalGroupMemberDetails = (data: IUpdateCommand): AxiosPromise =>\r\n instance.put(`api/localGroupMemberDetails/${data.groupId}/${data.fileId}`, data);\r\n\r\nexport default updateLocalGroupMemberDetails;\r\n","import React, { useMemo } from 'react';\r\nimport { IEditLocalGroupMemberDetailsPageProps } from './types';\r\nimport AjaxErrorBoundary from '../../../ajax/errorBoundary';\r\nimport LocalGroupMemberDetailsForm from '../form';\r\nimport { useDataFetcher, useBatchDataFetcher } from '../../../hooks';\r\nimport updateLocalGroupMemberDetails from './updateLocalGroupMemberDetails';\r\nimport { DropDownItem } from '../../../types';\r\nimport toSyncfusionDataSource from '../../../../utils/toSyncfusionDataSource';\r\n\r\nconst transformDropDownData = (data: {\r\n items: Array;\r\n}): Array<{ [key: string]: Object }> => toSyncfusionDataSource(data.items);\r\n\r\nconst config = {\r\n transformers: [(countiesData: any) => transformDropDownData(countiesData)],\r\n};\r\n\r\nconst EditLocalGroupMemberDetailsPage: React.FC = ({\r\n fileId,\r\n groupId,\r\n onClose,\r\n forNotification\r\n}) => {\r\n\r\n const urls = useMemo(() => {\r\n if (forNotification) {\r\n return ['/api/counties', `/api/localGroupMemberDetails/${groupId}/${fileId}?forNotification=true`, `/api/myDetails/${groupId}/officer`]\r\n } else {\r\n return ['/api/counties', `/api/localGroupMemberDetails/${groupId}/${fileId}`, `/api/myDetails/${groupId}/officer`]\r\n }\r\n },\r\n [groupId, fileId]);\r\n\r\n const {\r\n busy,\r\n data: [counties, data, isGroupOfficer],\r\n errors,\r\n } = useBatchDataFetcher(urls, config);\r\n\r\n return (\r\n \r\n { }}\r\n onClose={onClose}\r\n counties={counties}\r\n isGroupOfficer={isGroupOfficer}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default EditLocalGroupMemberDetailsPage;\r\n","import EditLocalGroupMemberDetailsPage from \"./EditLocalGroupMemberDetailsPage\";\r\n\r\nexport * from './types'\r\n\r\nexport default EditLocalGroupMemberDetailsPage;\r\n","import React from 'react';\r\nimport { IWaitNotificationModalProps } from './types';\r\nimport Modal from 'react-modal';\r\nimport { FormHeading } from '../../forms/formHeading';\r\n\r\nexport const WaitNotificationModal: React.FC = ({\r\n title,\r\n message,\r\n}) => {\r\n return (\r\n \r\n \r\n

{message}

\r\n
\r\n );\r\n};\r\n","import React from 'react';\r\nimport { INotificationModalProps } from './types';\r\nimport Modal from 'react-modal';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { FormHeading } from '../../forms/formHeading';\r\n\r\nexport const NotificationModal: React.FC = ({\r\n title,\r\n message,\r\n onRequestClose,\r\n}) => {\r\n return (\r\n \r\n \r\n

{message}

\r\n OK\r\n
\r\n );\r\n};\r\n","import * as Yup from 'yup';\r\n\r\nexport default Yup.object({\r\n title: Yup.string().required('Title is required'),\r\n details: Yup.string().required('Details are required'),\r\n});\r\n","import React, { useState } from 'react';\r\nimport { IRaiseMemberQueryModalProps } from './types';\r\nimport Modal from 'react-modal';\r\nimport { Formik, Form } from 'formik';\r\nimport ErrorList from '../../errorList';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport { SubmitButton, FormGroup, FormHeading } from '../../forms';\r\nimport { TextBox, UnboundField } from '../../formikBindings';\r\nimport schema from './schema';\r\nimport raiseMemberQuery from './raiseMemberQuery';\r\n\r\nexport const RaiseMemberQueryModal: React.FC = ({\r\n fileId,\r\n contactId,\r\n name,\r\n requestedBy,\r\n onClose,\r\n}) => {\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [ajaxErrors, setAjaxErrors] = useState>([]);\r\n\r\n return (\r\n \r\n \r\n {\r\n setAjaxErrors([]);\r\n setIsSaving(true);\r\n\r\n raiseMemberQuery({ fileId, requestedBy, ...values })\r\n .then(() => onClose())\r\n .catch(setAjaxErrors)\r\n .finally(() => setIsSaving(false));\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 Cancel\r\n \r\n Save\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n","import { instance } from '../../../services/api';\r\nimport { IRaiseMemberQueryCommand } from './types';\r\n\r\nexport default (command: IRaiseMemberQueryCommand) => {\r\n const { fileId, ...rest } = command;\r\n\r\n return instance.post(`api/localGroupMemberDetails/${fileId}/queries`, {\r\n ...rest,\r\n });\r\n};\r\n","import { createContext } from 'react';\r\nimport { IPasswordPolicyContext } from './types';\r\n\r\nconst PasswordPolicyContext = createContext(\r\n undefined,\r\n);\r\n\r\nexport default PasswordPolicyContext;\r\n","import React from 'react';\r\nimport usePasswordPolicy from './usePasswordPolicy';\r\n\r\nconst PasswordPolicyFeedback: React.FC = () => {\r\n const { feedback } = usePasswordPolicy();\r\n\r\n return (\r\n
    \r\n {feedback.map(item => (\r\n
  • \r\n {item.isValid ? (\r\n \r\n ) : (\r\n \r\n )}\r\n {item.text}\r\n
  • \r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default PasswordPolicyFeedback;\r\n","export const hasMinimumLength = (minimumLength: number) => (\r\n value: string,\r\n): boolean => value.length >= minimumLength;\r\n\r\nexport const hasMinimumAlphaCharacters = (numberOfAlphaCharacters: number) => (\r\n value: string,\r\n): boolean => value.replace(/\\d/g, '').length >= numberOfAlphaCharacters;\r\n\r\nexport const hasMinimumNumericCharacters = (\r\n numberOfNumericCharacters: number,\r\n) => (value: string): boolean =>\r\n value.replace(/\\D/g, '').length >= numberOfNumericCharacters;\r\n\r\nexport const hasMinimumUppercaseLetters = (\r\n numberOfUppercaseCharacters: number,\r\n) => (value: string): boolean =>\r\n value.replace(/[^A-Z]/g, '').length >= numberOfUppercaseCharacters;\r\n\r\nexport const hasMinimumLowercaseLetters = (\r\n numberOfLowercaseCharacters: number,\r\n) => (value: string): boolean =>\r\n value.replace(/[^a-z]/g, '').length >= numberOfLowercaseCharacters;\r\n\r\nexport const hasMinimumSpecialCharacters = (\r\n numberOfSpecialCharacters: number,\r\n) => (value: string): boolean =>\r\n value.replace(/[a-zA-Z0-9]/g, '').length >= numberOfSpecialCharacters;\r\n\r\nexport const doesNotStartOrEndWithSpaceCharacter = (value: string): boolean =>\r\n value.length > 0 && !(value.startsWith(' ') || value.endsWith(' '));\r\n\r\nexport const doesNotContainSpaceCharacter = (value: string): boolean =>\r\n value.length > 0 && value.indexOf(' ') === -1;\r\n","import { IPasswordPolicyRule } from './types';\r\nimport * as validators from './passwordPolicyValidationRules';\r\n\r\nconst injectValueAndPluralise = (template: string, value: number): string =>\r\n template\r\n .replace('{0}', value.toString())\r\n .replace('{1}', value > 1 ? 's' : '');\r\n\r\nconst createPolicyRules = (\r\n minimumLength: number,\r\n minimumLetters: number,\r\n minimumNumbers: number,\r\n minimumUppercase: number,\r\n minimumLowercase: number,\r\n minimumSpecial: number,\r\n notStartOrEndWithASpace: boolean,\r\n notContainAnySpaces: boolean,\r\n): Array => {\r\n const rules = [];\r\n\r\n if (minimumLength > 0) {\r\n rules.push({\r\n text: injectValueAndPluralise(\r\n 'Be at least {0} character{1}',\r\n minimumLength,\r\n ),\r\n validate: validators.hasMinimumLength(minimumLength),\r\n });\r\n }\r\n\r\n if (minimumLetters > 0) {\r\n rules.push({\r\n text: injectValueAndPluralise(\r\n 'Contain at least {0} letter{1}',\r\n minimumLetters,\r\n ),\r\n validate: validators.hasMinimumAlphaCharacters(minimumLetters),\r\n });\r\n }\r\n\r\n if (minimumNumbers > 0) {\r\n rules.push({\r\n text: injectValueAndPluralise(\r\n 'Contain at least {0} number{1}',\r\n minimumNumbers,\r\n ),\r\n validate: validators.hasMinimumNumericCharacters(minimumNumbers),\r\n });\r\n }\r\n\r\n if (minimumUppercase > 0) {\r\n rules.push({\r\n text: injectValueAndPluralise(\r\n 'Include at least {0} uppercase letter{1}',\r\n minimumUppercase,\r\n ),\r\n validate: validators.hasMinimumUppercaseLetters(minimumUppercase),\r\n });\r\n }\r\n\r\n if (minimumLowercase > 0) {\r\n rules.push({\r\n text: injectValueAndPluralise(\r\n 'Include least {0} lowercase letter{1}',\r\n minimumLowercase,\r\n ),\r\n validate: validators.hasMinimumLowercaseLetters(minimumLowercase),\r\n });\r\n }\r\n\r\n if (minimumSpecial > 0) {\r\n rules.push({\r\n text: injectValueAndPluralise(\r\n 'Include least {0} special character{1} (e.g. !#_$%&()*+%)',\r\n minimumSpecial,\r\n ),\r\n validate: validators.hasMinimumSpecialCharacters(minimumSpecial),\r\n });\r\n }\r\n\r\n if (notStartOrEndWithASpace) {\r\n rules.push({\r\n text: 'Not start or end with a space',\r\n validate: validators.doesNotStartOrEndWithSpaceCharacter,\r\n });\r\n }\r\n\r\n if (notContainAnySpaces) {\r\n rules.push({\r\n text: 'Not contain a space',\r\n validate: validators.doesNotContainSpaceCharacter,\r\n });\r\n }\r\n\r\n return rules;\r\n};\r\n\r\nexport default createPolicyRules;\r\n","import React, { useEffect, useState } from 'react';\r\nimport {\r\n IPasswordPolicyProviderProps,\r\n IPasswordPolicy,\r\n IPasswordPolicyRule,\r\n} from './types';\r\nimport PasswordPolicyContext from './PasswordPolicyContext';\r\nimport createPolicyRules from './createPolicyRules';\r\n\r\nconst PasswordPolicyProvider: React.FC = ({\r\n minimumLength,\r\n minimumLetters,\r\n minimumNumbers,\r\n minimumUppercase,\r\n minimumLowercase,\r\n minimumSpecial,\r\n notStartOrEndWithASpace,\r\n notContainAnySpaces,\r\n children,\r\n}) => {\r\n const [rules, setRules] = useState>([]);\r\n const [feedback, setFeedback] = useState>([]);\r\n const [isValid, setIsValid] = useState(false);\r\n\r\n useEffect(() => {\r\n setRules(\r\n createPolicyRules(\r\n minimumLength,\r\n minimumLetters,\r\n minimumNumbers,\r\n minimumUppercase,\r\n minimumLowercase,\r\n minimumSpecial,\r\n notStartOrEndWithASpace,\r\n notContainAnySpaces,\r\n ),\r\n );\r\n }, [\r\n minimumLength,\r\n minimumLetters,\r\n minimumNumbers,\r\n minimumUppercase,\r\n minimumLowercase,\r\n minimumSpecial,\r\n notStartOrEndWithASpace,\r\n notContainAnySpaces,\r\n ]);\r\n\r\n useEffect(() => {\r\n setFeedback(rules.map(rule => evaluate(rule, '')));\r\n }, [rules]);\r\n\r\n const evaluate = (\r\n rule: IPasswordPolicyRule,\r\n value: string,\r\n ): IPasswordPolicy => ({\r\n text: rule.text,\r\n isValid: rule.validate(value),\r\n });\r\n\r\n const handleValidate = (value: string): void => {\r\n const results = rules.map(rule => evaluate(rule, value));\r\n\r\n setFeedback(results);\r\n setIsValid(results.every(result => result.isValid));\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default PasswordPolicyProvider;\r\n","import { useContext } from 'react';\r\nimport { IPasswordPolicyContext } from './types';\r\nimport PasswordPolicyContext from './PasswordPolicyContext';\r\n\r\nconst usePasswordPolicy = (): IPasswordPolicyContext => {\r\n const context = useContext(PasswordPolicyContext);\r\n\r\n if (!context) {\r\n throw new Error(\r\n 'This component must be a component',\r\n );\r\n }\r\n\r\n return context;\r\n};\r\n\r\nexport default usePasswordPolicy;\r\n","import * as Yup from 'yup';\r\n\r\nexport default Yup.object({\r\n oldPassword: Yup.string()\r\n .required('Please enter your old password'),\r\n password: Yup.string()\r\n .required('Please enter a new password'),\r\n passwordConfirmation: Yup.string()\r\n .required('Please confirm password')\r\n .oneOf([Yup.ref('password'), null], 'Passwords must match')\r\n});\r\n","import React, { useState } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { IResetCurrentPasswordFormValues } from './types';\r\nimport { Form, Formik } from 'formik';\r\nimport ErrorList from '../errorList';\r\nimport { TextBox } from '../formikBindings';\r\nimport { FormHeading, FormGroup, ActionButton } from '../forms';\r\nimport { ButtonComponent } from '@syncfusion/ej2-react-buttons';\r\nimport resetCurrentPassword from './resetCurrentPassword';\r\nimport schema from './schema';\r\nimport { NotificationModal } from '../modals/notification';\r\nimport PasswordPolicyFeedback from '../passwordPolicy/PasswordPolicyFeedback';\r\nimport usePasswordPolicy from '../passwordPolicy/usePasswordPolicy';\r\nimport useUserData from '../userData';\r\nimport useAuthentication from '../authentication';\r\n\r\nconst initialValues: IResetCurrentPasswordFormValues = {\r\n oldPassword: '',\r\n password: '',\r\n passwordConfirmation: '',\r\n};\r\n\r\nconst ResetCurrentPasswordPage: React.FC = () => {\r\n const { selectedContactFileId } = useUserData();\r\n const { passwordResetRequired, onLogout } = useAuthentication();\r\n\r\n const navigate = useNavigate();\r\n const [showModal, setShowModal] = useState(false);\r\n const [ajaxErrors, setAjaxErrors] = useState>([]);\r\n const { validate, isValid } = usePasswordPolicy();\r\n\r\n return (\r\n <>\r\n
\r\n {\r\n setAjaxErrors([]);\r\n\r\n resetCurrentPassword({\r\n fileId: selectedContactFileId,\r\n oldPassword: values.oldPassword,\r\n newPassword: values.password,\r\n })\r\n .then(() => setShowModal(true))\r\n .catch(setAjaxErrors)\r\n .finally(() => setSubmitting(false));\r\n }}\r\n >\r\n {({ isSubmitting }) => (\r\n
\r\n \r\n

\r\n {passwordResetRequired && (\r\n Your password has expired. \r\n )}\r\n Please enter a new password that fulfills all of the rules\r\n listed\r\n

\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {\r\n validate(event?.value ?? '');\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n
\r\n {passwordResetRequired && (\r\n \r\n Cancel\r\n \r\n )}\r\n \r\n Reset Password\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n )}\r\n \r\n
\r\n {showModal && (\r\n {\r\n if (passwordResetRequired) {\r\n onLogout();\r\n } else {\r\n navigate('/', { replace: true });\r\n }\r\n }}\r\n />\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ResetCurrentPasswordPage;\r\n","import { AxiosPromise } from 'axios';\r\nimport { IResetCurrentPasswordCommand } from './types';\r\nimport { instance } from '../../services/api';\r\n\r\nexport default (data: IResetCurrentPasswordCommand): AxiosPromise =>\r\n instance.post(`api/accounts/resetCurrent`, data);\r\n","import ResetCurrentPasswordPage from './ResetCurrentPasswordPageContainer';\r\n\r\nexport default ResetCurrentPasswordPage;\r\n","import React from 'react';\r\nimport PasswordPolicyProvider from '../passwordPolicy/PasswordPolicyProvider';\r\nimport ResetCurrentPasswordPage from './ResetCurrentPasswordPage';\r\n\r\nconst ResetCurrentPasswordPageContainer: React.FC = () => (\r\n \r\n \r\n
\r\n);\r\n\r\nexport default ResetCurrentPasswordPageContainer;\r\n","import React from 'react';\r\nimport { Navigate, RouteProps } from 'react-router-dom';\r\nimport useAuthentication from '../../authentication';\r\n\r\nconst RequireAuth: React.FC = ({\r\n children\r\n}) => {\r\n const { isAuthenticated, passwordResetRequired } = useAuthentication();\r\n\r\n return (\r\n <>\r\n {isAuthenticated ? (\r\n <>\r\n {passwordResetRequired ? (\r\n \r\n ) : (\r\n <>{children}\r\n )}\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default RequireAuth;\r\n","import RequireAuth from './RequireAuth';\r\n\r\nexport default RequireAuth;\r\n","import { createContext } from 'react';\r\nimport { IUserDataContext } from './types';\r\n\r\nconst UserDataContext = createContext(undefined);\r\n\r\nexport default UserDataContext;\r\n","import useUserData from './useUserData';\r\n\r\nexport default useUserData;\r\n","import { useContext } from 'react';\r\nimport { IUserDataContext } from './types';\r\nimport UserDataContext from './UserDataContext';\r\n\r\nconst useUserData = (): IUserDataContext => {\r\n const context = useContext(UserDataContext);\r\n\r\n if (!context) {\r\n throw new Error('This component must be a component');\r\n }\r\n\r\n return context;\r\n};\r\n\r\nexport default useUserData;\r\n","export const UserRoles = Object.freeze({\r\n All: '0',\r\n LocalGroupUser: '1',\r\n ShowDiary: '2',\r\n EditAssessments: '3',\r\n ShowExpenses: '5',\r\n ListCourses: '6',\r\n WebAdmin: '7',\r\n ManageEquipment: '9', // EU1833 - TO - 27/09/2022\r\n LocalGroupLinkMaintenance: '10' // EU2676 - TO - 17/10/2022\r\n});\r\n\r\nexport const QuestionTypes = Object.freeze({\r\n Check: 7991,\r\n DateTime: 7993,\r\n IdentifiedTargetedCompletedSource: 7994,\r\n Number: 7997,\r\n Score: 7996,\r\n Text: 7992,\r\n TextReadonly: 7995,\r\n TextMomo: 66397 \r\n});\r\n\r\n// EU1833 - TO - 28/09/2022\r\nexport const EquipmentHQFileId = 30012593;\r\n\r\n// EU2726 - TO - 15/11/2022\r\nexport const PortalIssuesFormLink = 'https://www.iamroadsmart.com/darts-portal-updates/darts-issue-form'\r\n","import axios from 'axios';\r\nimport parseModelStateErrors from '../utils/parseModelStateErrors';\r\nimport localStorageService from './localStorageService';\r\n\r\nconst instance = axios.create();\r\n\r\ninstance.defaults.headers.common.Accept = 'application/json';\r\ninstance.defaults.headers.common['Content-Type'] = 'application/json';\r\n\r\ninstance.interceptors.request.use(function (config) {\r\n const authToken = localStorageService.getAuthToken();\r\n if (authToken) config.headers.Authorization = `Bearer ${authToken}`;\r\n\r\n const accessToken = localStorageService.getAccessToken();\r\n if (accessToken) config.headers['x-auth'] = accessToken;\r\n\r\n return config;\r\n},\r\n function (error) {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\ninstance.interceptors.response.use(\r\n function (response) {\r\n return response;\r\n },\r\n function (error) {\r\n if (error.isCanceled) {\r\n return Promise.reject(error);\r\n }\r\n else if (error.response) {\r\n // The request was made and the server responded with a status code\r\n // that falls out of the range of 2xx\r\n\r\n if (error.response.status === 500) {\r\n return Promise.reject([\r\n 'An unexpected error has occurred, if the problem persists please contact your system administrator.',\r\n ]);\r\n }\r\n\r\n if (error.response.status === 401) {\r\n\r\n if (error.response.headers['www-authenticate'] && error.response.headers['www-authenticate'].includes('Bearer error=\"invalid_token\"')) {\r\n localStorageService.clear();\r\n window.location.href = window.origin;\r\n return Promise.reject(['Your login has expired, please wait while you are redirected back to the login page...']);\r\n }\r\n\r\n return Promise.reject([\r\n 'You do not have permission to access the requested resource.',\r\n ]);\r\n\r\n }\r\n\r\n const { errorNumber } = error.response.data;\r\n\r\n // expired/invalid token\r\n if (errorNumber === 102 || errorNumber === 103) {\r\n localStorageService.clear();\r\n window.location.href = window.origin;\r\n return Promise.reject([\r\n 'Your login has expired, please wait while you are redirected back to the login page...',\r\n ]);\r\n }\r\n\r\n return Promise.reject(parseModelStateErrors(error.response.data));\r\n } else if (error.request) {\r\n // The request was made but no response was received\r\n // `error.request` is an instance of XMLHttpRequest in the browser and an instance of\r\n // http.ClientRequest in node.js\r\n return Promise.reject([\r\n 'The server could not be reached, please try again later.',\r\n ]);\r\n } else {\r\n // Something happened in setting up the request that triggered an Error\r\n return Promise.reject(['Invalid request']);\r\n }\r\n },\r\n);\r\n\r\nexport { instance };\r\n","export default function parseModelStateErrors(data: any): Array {\r\n const { errors } = data;\r\n let results: Array = [];\r\n\r\n if (!errors) {\r\n return ['An unexpected error has occurred'];\r\n }\r\n\r\n Object.keys(errors).forEach(key => (results = [...results, ...errors[key]]));\r\n\r\n return results;\r\n}\r\n","import storage from 'local-storage-fallback';\r\nimport { IDevice } from '../components/deviceSettings/form';\r\n\r\nconst AuthTokenKey = 'auth_token';\r\nconst AccessTokenKey = 'access_token';\r\nconst Device = 'device';\r\n// TO - 22/08/2023\r\nconst SelectedContact = 'selected_contact';\r\nconst SelectedOrg = 'selected_org';\r\n\r\nexport default {\r\n getAuthToken: () => storage.getItem(AuthTokenKey),\r\n getAccessToken: () => storage.getItem(AccessTokenKey),\r\n getDevice: (): IDevice | null => {\r\n const device = storage.getItem(Device);\r\n\r\n if (device === null) {\r\n return null;\r\n }\r\n\r\n return JSON.parse(device);\r\n },\r\n setTokens: (authToken: string, accessToken: string) => {\r\n storage.setItem(AuthTokenKey, authToken);\r\n storage.setItem(AccessTokenKey, accessToken);\r\n },\r\n setDevice: (device: IDevice): void => {\r\n storage.setItem(Device, JSON.stringify(device));\r\n },\r\n clearDevice: () => storage.removeItem(Device),\r\n clear: () => {\r\n storage.removeItem(AuthTokenKey);\r\n storage.removeItem(AccessTokenKey);\r\n storage.removeItem(Device);\r\n // TO - 22/08/2023\r\n storage.removeItem(SelectedContact);\r\n storage.removeItem(SelectedOrg);\r\n },\r\n // TO - 22/08/2023\r\n getSelectedContact: () => storage.getItem(SelectedContact),\r\n getSelectedOrg: () => storage.getItem(SelectedOrg),\r\n setSelectedContact: (contactId: string) => storage.setItem(SelectedContact, contactId),\r\n setSelectedOrg: (orgId: string) => storage.setItem(SelectedOrg, orgId)\r\n};\r\n","export default (name: string): string => {\r\n return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();\r\n}\r\n","export default function isDifferent(value1: any, value2: any): boolean {\r\n return JSON.stringify(value1) !== JSON.stringify(value2);\r\n}\r\n","// https://reactjs.org/blog/2015/12/16/ismounted-antipattern.html\r\nexport interface CancelablePromise {\r\n promise: Promise;\r\n cancel: () => void;\r\n}\r\n\r\nexport default function makeCancelable(\r\n promise: Promise,\r\n source: any,\r\n): CancelablePromise {\r\n let hasCanceled_ = false;\r\n\r\n const wrappedPromise = new Promise((resolve, reject) => {\r\n promise.then(\r\n val => (hasCanceled_ ? reject({ isCanceled: true }) : resolve(val)),\r\n error => (hasCanceled_ ? reject({ isCanceled: true }) : reject(error)),\r\n );\r\n });\r\n\r\n return {\r\n promise: wrappedPromise,\r\n cancel() {\r\n hasCanceled_ = true;\r\n if (source) {\r\n source.cancel();\r\n }\r\n },\r\n };\r\n}\r\n","import qs from 'qs';\r\n\r\nexport default class queryString {\r\n static parse(value: string) {\r\n return qs.parse(value, { ignoreQueryPrefix: true });\r\n }\r\n\r\n static stringify(value: any) {\r\n return qs.stringify(value, {\r\n strictNullHandling: true,\r\n encodeValuesOnly: true,\r\n allowDots: true,\r\n });\r\n }\r\n}\r\n","import { DropDownItem } from '../components/types';\r\n\r\nexport default function toSyncfusionDataSource(\r\n items: Array,\r\n emptyItemDescription: string | undefined = undefined,\r\n): Array<{ [key: string]: Object }> {\r\n const results = items.map(item => ({ id: item.id, item: item }));\r\n\r\n if (typeof emptyItemDescription !== 'undefined') {\r\n results.unshift({\r\n id: '',\r\n item: { id: '', displayValue: emptyItemDescription },\r\n });\r\n }\r\n\r\n return results;\r\n}\r\n\r\nexport const fields: object = { text: 'item.displayValue', value: 'id' };\r\n\r\nexport const transformDropDownData = (data: {\r\n items: Array;\r\n}): Array<{ [key: string]: Object }> => toSyncfusionDataSource(data.items);\r\n","export default (date: Date): Date => {\r\n return new Date(\r\n Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()),\r\n );\r\n};\r\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","////////////////////////////////////////////////////////////////////////////////\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 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: any;\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 status: number;\n location: string;\n revalidate: boolean;\n reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\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\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\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs):\n | Promise\n | DataFunctionValue;\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 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\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;\n action?: ActionFunction;\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 */\ntype 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: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, 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 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 matches = matchRouteBranch(\n branches[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 safelyDecodeURI(pathname)\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\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): 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 if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\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, paramNames] = 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 = paramNames.reduce>(\n (memo, paramName, 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 memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\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 paramNames: string[] = [];\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(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\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, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\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\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent 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/**\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 (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\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 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 * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponseImpl {\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// We don't want the class exported since usage of it at runtime is an\n// implementation detail, but we do want to export the shape so folks can\n// build their own abstractions around instances via isRouteErrorResponse()\nexport type ErrorResponse = InstanceType;\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 arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\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 ActionFunction,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n AgnosticRouteObject,\n DataResult,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n ImmutableRouteKey,\n LoaderFunction,\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} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\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 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 * 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 * 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_normalizeFormMethod: boolean;\n v7_prependBasename: 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}\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?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): 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};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\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\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\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\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\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\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 // Config driven behavior flags\n let future: FutureConfig = {\n v7_normalizeFormMethod: false,\n v7_prependBasename: 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 // 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) {\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 let initialized =\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 !initialMatches.some((m) => m.route.lazy) &&\n // And we have to either have no loaders or have been provided hydrationData\n (!initialMatches.some((m) => m.route.loader) || init.hydrationData != null);\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 // 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: string[] = [];\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 // 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 // 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 // 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 }\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 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(newState: Partial): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\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 ): 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 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 updateState({\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 // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\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 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 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 });\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 submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: 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 let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\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 });\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 pendingActionData: RouteData | undefined;\n let pendingError: RouteData | 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 pendingError = {\n [findNearestBoundary(matches).route.id]: 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 actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n pendingActionData,\n pendingError\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,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\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 opts: { replace?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation });\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 result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\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 replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\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 are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\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 overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\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 let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionData,\n pendingError\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(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n });\n return { shortCircuited: true };\n }\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 (!isUninterruptedRevalidation) {\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 let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\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 { results, 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(results);\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(state, redirect.result, { replace });\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 pendingError,\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 let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n return state.fetchers.get(key) || IDLE_FETCHER;\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\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath })\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);\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(key, routeId, path, match, matches, submission);\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(key, routeId, path, match, matches, submission);\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 submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher = getSubmittingFetcher(submission, existingFetcher);\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n mapRouteProperties,\n basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou 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 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 let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n let loadingFetcher = getLoadingFetcher(submission);\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, 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 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 isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\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 { results, 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(results);\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(state, 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 let didAbortFetchLoads = 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 ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\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 submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher = getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n );\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 // 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 let doneFetcher = getDoneFetcher(undefined);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\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 state: RouterState,\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.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true,\n });\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.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(redirect.location);\n } else {\n routerWindow.location.assign(redirect.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 ? HistoryAction.Replace : 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.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: redirect.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 async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, f.controller.signal),\n f.match,\n f.matches,\n manifest,\n mapRouteProperties,\n basename\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\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 { results, loaderResults, fetcherResults };\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.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\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 state.fetchers.delete(key);\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 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 _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\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,\n dispose,\n getBlocker,\n deleteBlocker,\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\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\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\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 async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\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(request, location, matches, requestContext);\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 async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\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 match\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 routeMatch?: AgnosticDataRouteMatch\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 routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\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, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\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 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 result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted: ${request.method} ${request.url}`\n );\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.status,\n headers: {\n Location: result.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 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 let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\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 : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\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 let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\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 : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\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: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n { isStaticRequest: true, isRouteRequest, requestContext }\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted: ${request.method} ${request.url}`\n );\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 pendingActionError,\n activeDeferreds\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 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: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: RouterNavigateOptions\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 fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId != null && relative !== \"path\") {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route. When using relative:path,\n // fromRouteId is ignored since that is always relative to the current\n // location path\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 getPathContributingMatches(contextualMatches).map((m) => m.pathnameBase),\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?: RouterNavigateOptions\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 isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\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 = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.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 if (match.route.loader == null) {\n return false;\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 defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\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 if fetcher won't be present in the subsequent render\n if (!matches.some((m) => m.route.id === f.routeId)) {\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.includes(key)) {\n // Always revalidate if the fetcher was cancelled\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 defaultShouldRevalidate: 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 * 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\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n basename: string,\n opts: {\n isStaticRequest?: boolean;\n isRouteRequest?: boolean;\n requestContext?: unknown;\n } = {}\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({\n request,\n params: match.params,\n context: opts.requestContext,\n }),\n abortPromise,\n ]);\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 values = 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) {\n throw handlerError;\n }\n result = values[0];\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 run 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, data: 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 !== 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 resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(\n new URL(request.url),\n matches.slice(0, matches.indexOf(match) + 1),\n basename,\n true,\n location\n );\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse: QueryRouteResponse = {\n type:\n resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result,\n };\n throw queryRouteResponse;\n }\n\n let data: any;\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 data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\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 (resultType === ResultType.error) {\n return { type: resultType, error: result };\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 return { type: ResultType.data, data: result };\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 pendingError: RouteData | undefined,\n activeDeferreds: Map\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\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 // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\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) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\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 } else {\n loaderData[id] = result.data;\n }\n\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 }\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) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[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 pendingError: RouteData | 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 pendingError,\n activeDeferreds\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\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 = 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 }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\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 (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 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 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 isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || obj.type === ResultType.error)\n );\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//#endregion\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 */\n// eslint-disable-next-line\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 // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function getValue(nameSpace, obj) {\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\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 if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\n var obj1 = arguments_1[i];\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n if (Array.isArray(clone) && clone.hasOwnProperty('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 // eslint-disable-next-line\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\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 {Object} 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 {Object} 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 // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\n var args = arguments;\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 */\n// eslint-disable-next-line\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 // eslint-disable-next-line\n throw 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 // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\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","/**\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 // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n ret.mapper[i] = digits[i];\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\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/* tslint:disable no-any */\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 // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 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 // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\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 case ':':\n // eslint-disable-next-line\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","import { 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 integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\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);\n /* eslint-disable @typescript-eslint/no-explicit-any */\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 }\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 // eslint-disable-next-line\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 * @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[\"\" + i] === '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)) : fValue;\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\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 * @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 */\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/* tslint:disable no-any */\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\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 // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\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 // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\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 // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\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 case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\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 // tslint:disable-next-line\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 /* tslint:disable */\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 var splitStr;\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 // eslint-disable-next-line\n 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 var numOptions;\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 // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\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","import { 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 }];\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 // eslint-disable-next-line\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 * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(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 // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\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 // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\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 // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { 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\nexport var IntlBase;\n(function (IntlBase) {\n /* eslint-disable */\n // tslint:disable-next-line:max-line-length.\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\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 /* tslint:disable:quotemark */\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 /* tslint:enable:quotemark */\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 // eslint-disable-next-line\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 return val.replace(IntlBase.defaultCurrency, sym);\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 * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = 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 // eslint-disable-next-line\n options[data[i]] = customNumberFormat(formatSplit[i], 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 // eslint-disable-next-line\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 // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\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(/[d‏M‏]([^d‏M])[d‏M‏]/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 // eslint-disable-next-line\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 // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\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 /**\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 * @return {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 // eslint-disable-next-line\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 header;\n // eslint-disable-next-line\n 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 // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { 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 // eslint-disable-next-line\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 {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\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 { 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 new Error(response.statusText);\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').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n // eslint-disable-next-line\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n // eslint-disable-next-line\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;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].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","/**\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\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 */\n// eslint-disable-next-line\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","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\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 // eslint-disable-next-line\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 // tslint:disable-next-line:no-any\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 /* tslint:disable:no-any */\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 /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\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\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\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 */\n// tslint:disable-next-line:no-any\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 // tslint:disable-next-line:no-any\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 * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\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 // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { 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 */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(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 */\n// eslint-disable-next-line\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 // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(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 // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(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 */\n// eslint-disable-next-line\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 */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(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 // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(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 // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('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 // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('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 // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(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 // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(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 /* tslint:disable no-function-expression */\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 Array.prototype[\"\" + dFunc].apply(prop, [newValue[parseInt(i.toString(), 10)]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[parseInt(i.toString(), 10)], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[\"\" + dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\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// eslint-disable-next-line\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 * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\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 * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\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 // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\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 // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('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 // eslint-disable-next-line\n if (context.hasOwnProperty('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 * @return {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') {\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 // eslint-disable-next-line\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 /* tslint:disable:align */\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 * Method for set the Global animation modes for Syncfusion Blazor components.\n *\n * @param {string} value - Specifies the animation mode.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\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 * 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 = '22';\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 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=MjI=&utm_source=license&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) - 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","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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};\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 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 // tslint:disable-next-line:no-function-constructor-with-string-args\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('unload', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('unload', 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 // 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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\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 // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n // eslint-disable-next-line\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 = void 0;\n // eslint-disable-next-line\n 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 // eslint-disable-next-line\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};\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 positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\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 /* eslint-disable @typescript-eslint/no-explicit-any */\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 /* tslint:disable no-any */\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 // tslint:disable-next-line:max-func-body-length\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 /* tslint:disable no-any */\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 /* tslint:disable no-any */\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 /* tslint:disable no-any */\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\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 if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight + document.scrollingElement.scrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {\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 * @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) > 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 /* tslint:disable no-any */\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 isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;\n var isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - document.scrollingElement.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 // eslint-disable-next-line\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 // eslint-disable-next-line\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};\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 eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _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 // eslint-disable-next-line\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 var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n 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 // eslint-disable-next-line\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","/**\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 // eslint-disable-next-line\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 return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n 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 // eslint-disable-next-line\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 // tslint:disable-next-line\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 // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(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 // tslint:disable-next-line\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 // eslint-disable-next-line\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// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\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","/**\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 // eslint-disable-next-line\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","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 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(false)\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","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 } 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'];\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 ariaState;\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\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 removeClass([frameSpan], [CHECK, INDETERMINATE]);\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\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 frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\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 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 }\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.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 this.element.parentNode.insertBefore(wrapper, this.element);\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.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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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.textContent = 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 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 var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\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 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 if (containerAttr.indexOf(key) > -1) {\n var wrapper = this.getWrapper();\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 }\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(false)\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","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 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 }\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 { Component, rippleEffect, NotifyPropertyChanges, Property, closest } 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'];\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 }\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) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element) {\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 this.element.parentNode.insertBefore(wrapper, this.element);\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 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 if (ATTRIBUTES.indexOf(key) > -1) {\n var wrapper = this.element.parentElement;\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 }\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(false)\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};\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 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 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.isAngular = 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 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 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 this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\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: { 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 };\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 // eslint-disable-next-line max-len\n var shortNames = this.getCultureValues().length > 0 && this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 && 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 };\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 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 this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveRight':\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveUp':\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 break;\n case 'moveDown':\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 break;\n case 'select':\n if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\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 }\n else {\n this.contentClick(null, --view, (element), value);\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 }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\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 }\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 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 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 }\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 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 }\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) {\n modules.push({ args: [this], member: '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 this.l10.setLocale(this.locale);\n this.updateFooter();\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.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 if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\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 if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\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 if (this.getModuleName() === 'calendar') {\n this.table.focus();\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 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) {\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 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 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 // eslint-disable-next-line use-isnan\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.isAngular = false;\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 === 'Auto') {\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'\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' }, 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 touchstart', 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 touchstart', 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 case 'tab':\n this.hide(e);\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 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 this.hide(e);\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.value !== +this.previousDate)) {\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 date = this.globalize.parseDate(this.inputElement.value.toLocaleUpperCase(), dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { 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 });\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' } : { 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 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) {\n modules.push({ args: [this], member: '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 }\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) && (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 _super.prototype.destroy.call(this);\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'\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), {}), !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), {}), !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 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-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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 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 this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\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 @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 TIMEICON = 'e-time-icon';\nvar CLEARICON = 'e-clear-icon';\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.isAngular = false;\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 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 _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 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-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.prevValue;\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.createDateObj(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(date);\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 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 var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\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 };\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 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 }\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 this.updatePlaceHolder();\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","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.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.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 _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 (!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 === 'Auto') {\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 dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), 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 + '_datepopup' });\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 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) {\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 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 _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.display = \"flex\";\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 modelWrapper = createElement('div', { className: 'e-datetime-mob-popup-wrap' });\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 var timeContent = this.dateTimeWrapper.querySelector(\".e-content\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(timeContent);\n this.dateTimeWrapper.insertBefore(modelWrapper, 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.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 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) {\n modules.push({ args: [this], member: '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 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 this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\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.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","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 {XMLHttpRequest} 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 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 for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup') && 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 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\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[0].comparer, true);\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 = args.group[0].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\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 */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query) {\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, 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 {XMLHttpRequest} 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.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('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.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('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 {XMLHttpRequest} request\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request) {\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 {XMLHttpRequest} request\n * @param {Ajax} 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.setRequestHeader('Accept', this.options.multipartAccept);\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.setRequestHeader('Accept', this.options.accept);\n }\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.setRequestHeader('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 {XMLHttpRequest} xhr?\n * @param {Ajax} 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.getResponseHeader('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 = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n 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.getResponseHeader('Content-Type') && xhr.getResponseHeader('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.getResponseHeader('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 {XMLHttpRequest} request\n * @param {Ajax} 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.setRequestHeader('Prefer', 'return=representation');\n }\n request.setRequestHeader('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 {XMLHttpRequest} xhr?\n * @param {Ajax} 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 {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.setRequestHeader('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 {XMLHttpRequest} xhr?\n * @param {Ajax} 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.getResponseHeader('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),\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 * Ajax 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 {XMLHttpRequest} 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 {XMLHttpRequest} xhr?\n * @param {Ajax} 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 {XMLHttpRequest} request\n * @param {Ajax} 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.setRequestHeader('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.setRequestHeader('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 { Ajax } 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 /**\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.ajaxReqOption, request);\n }\n if (request.httpRequest.getResponseHeader('Content-Type').indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.httpRequest, 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.httpRequest, 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 ajax_1 = new Ajax(req);\n ajax_1.beforeSend = function () {\n _this.beforeSend(ajax_1.httpRequest, ajax_1);\n };\n req = ajax_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests.\n this.requests.push(ajax_1);\n }\n else {\n this.ajaxReqOption = 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].httpRequest, _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].httpRequest, _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].httpRequest);\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.setRequestHeader(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 doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var ajax_2 = new Ajax(req);\n ajax_2.beforeSend = function () {\n _this.beforeSend(ajax_2.httpRequest, ajax_2);\n };\n ajax_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 ajax_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.httpRequest, request, changes, args));\n };\n ajax_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n ajax_2.send().catch(function (e) { return true; }); // to handle the failure requests.\n return deff_1.promise;\n }\n else {\n return this.doAjaxRequest(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 doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else {\n return this.doAjaxRequest(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 doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.doAjaxRequest(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 doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.doAjaxRequest(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 = 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.ajaxReqOption, 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.httpRequest, request);\n this.ajaxDeffered.resolve(record);\n };\n DataManager.prototype.failureFunc = function (e) {\n this.ajaxDeffered.reject([{ error: e }]);\n };\n DataManager.prototype.doAjaxRequest = function (res, ajaxFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.ajaxDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_3 = new Ajax(res);\n ajax_3.beforeSend = function () {\n _this.beforeSend(ajax_3.httpRequest, ajax_3);\n };\n ajax_3.onSuccess = this.successFunc.bind(this);\n ajax_3.onFailure = this.failureFunc.bind(this);\n ajax_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.ajaxReqOption = res;\n ajaxFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.ajaxDeffered.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 { 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 /**\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.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') {\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] = 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 else if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n var arr = value.split(/[^0-9.]/);\n return new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\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) * 2)\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","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\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) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(function () {\n queryString = '';\n }, 1000);\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n }\n index = index + 1;\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 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.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","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';\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 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};\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.isAngular = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\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 (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 ele.appendChild(noDataElement[i]);\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.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.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);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\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 }\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 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 _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n _this.isRequesting = false;\n var listItems = e.result;\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n ulElement = _this.renderItems(listItems, fields);\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 }\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 var dataManager = new DataManager(eventArgs.data);\n var listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\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 (!localDataArgs.cancel) {\n _this.isRequesting = false;\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 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.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.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.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.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 this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\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 }\n }\n if (!isNullOrUndefined(this.list)) {\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 /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = 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 /**\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 && 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 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) {\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 for (var i = topIndex; i > -1; i--) {\n if (!isNullOrUndefined(liCollections[i]) && liCollections[i].classList.contains(dropDownBaseClasses.group)) {\n var currentLi = liCollections[i];\n this.fixedHeaderElement.innerHTML = currentLi.innerHTML;\n this.fixedHeaderElement.style.top = target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n break;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n }\n }\n };\n DropDownBase.prototype.getValidLi = function () {\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) {\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 }\n else {\n ulElement = this.createListItems(listData, fields);\n }\n return ulElement;\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 if (typeof this.itemTemplate !== 'function' && itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\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 = this.getItems();\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 * 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 && 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) {\n this.resetList(this.dataSource);\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp) {\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);\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 }\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 /**\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 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 this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\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]) {\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 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.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 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 }, 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// 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 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};\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.isAngular = false;\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.initRemoteRender = 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 };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\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 };\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.ulElement.querySelector('.' + dropDownListClasses.li);\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.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\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') {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\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.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.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 };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\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 };\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 var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(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.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\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 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 this.renderList(e);\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.updateHomeEndAction(e);\n break;\n case 'end':\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\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) {\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\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 nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n }\n else {\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\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.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\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.getPageCount = function () {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n };\n DropDownList.prototype.pageUpSelection = function (steps, event) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.pageDownSelection = function (steps, event) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n this.setSelection(previousItem, event);\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 this.isInteracted = false;\n this.hidePopup(e);\n if (!isActive) {\n this.onFocusOut();\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 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.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 this.activeIndex = this.getIndexByValue(value);\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 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 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.previousValue === dataItem.value) {\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 }\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) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.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.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 if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.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', this.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 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 this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\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 {\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 = query ? query.clone() : this.query ? this.query.clone() : new Query();\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 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.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 === '') ?\n false : true;\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 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 this.resetList(dataSource, fields, query);\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 // 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.isNotSearchList) {\n this.isNotSearchList = false;\n return;\n }\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.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 this.list.scrollTop = 0;\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initRemoteRender = 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 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) === _this.value : x[checkField_1] === _this.value;\n });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\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 this.addNewItem(list, selectedItem);\n if (!isNullOrUndefined(this.itemData)) {\n this.focusIndexItem();\n }\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n }\n }\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_1 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_1) ||\n (getValue(_this.fields.value, data) === value_1));\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.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.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n this.removeFocus();\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.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 var searchBox = _this.setSearchBox(popupEle);\n _this.listHeight = 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.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container)) {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listHeight = (parseInt(_this.listHeight, 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.listHeight = (parseInt(_this.listHeight, 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.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 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 if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\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.getFocusElement();\n _this.createPopup(popupEle, offsetValue, left);\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\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 attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_options' });\n _this.inputElement.setAttribute('aria-expanded', 'true');\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, collision: { 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 _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\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 this.hidePopup();\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 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) {\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 && (!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) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + 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) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n DropDownList.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\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 if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\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 this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\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 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 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 (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.actionCompleteData.ulElement = this.ulElement.cloneNode(true);\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\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 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', '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 === 'Auto') {\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') {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\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 this.initValue();\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.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 };\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 this.list = null;\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 this.itemData = null;\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) {\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 === [])) {\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 this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\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 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': 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 (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\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 (newProp.value === null) {\n this_1.clearAll();\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.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var item = this_1.getElementByValue(newProp.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 this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.value)))\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 (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.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender && 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 _loop_1(prop);\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 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.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 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 this.renderList(e);\n }\n this.invokeRenderPopup(e);\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 element = this.findListElement(this.ulElement, 'li', 'data-value', this.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.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\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 === 'Auto') {\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 this.isTyped = true;\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType === 'Auto' && this.inputElement.value === '') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\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 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 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.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 this.hiddenElement = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.popupObj = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.inputWrapper = 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.isAngular) {\n this.inputElement = null;\n }\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.initRemoteRender = 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(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", 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 { 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 this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\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 gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\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 = gObj.getQuery().clone();\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 Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (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)].field).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).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 this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\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.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","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 } 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' });\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);\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] : '', role: 'search'\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 }\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 }\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 === 'isnull' || this.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 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';\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 var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\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.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n if (li) {\n this.setSelection(li, null);\n }\n else if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\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) {\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 === 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 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 this.list.scrollTop = count * height + fixedHead;\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n this.list.scrollTop = 0;\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') {\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 this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value }, !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.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = 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 (this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n this.list.scrollTop = 0;\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 (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 this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && 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 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 this.setProperties({ value: value });\n if (previousValue_1 !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\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 changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\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);\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 if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\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 if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.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 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 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 } 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 filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\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)) {\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 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 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 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.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 if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n this.resetList(dataSource, fields, query, e);\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 }\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 this.fixedHeaderElement = null;\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 this.list.scrollTop = 0;\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return true && this.inputElement.value.trim() !== '';\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 (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 !== '' ? 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 };\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 }\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 }, 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","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","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","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, clearReactVueTemplates } 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 if (!this.dlgObj) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\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 this.dlgObj.destroy();\n remove(elem);\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 };\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 valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput && valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\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);\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 var iconClass = this.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = this.parent.element.querySelector('[e-mappinguid=\"' + column.uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (flIcon) {\n flIcon.classList.remove('e-filtered');\n }\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","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 };\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 {\n index--;\n }\n }\n cli = cul.children[index];\n if (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 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 this.closeMenu(null, e);\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.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.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\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'))\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 _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\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 && !_this.isMenusClosed) {\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 MenuBase.prototype.copyObject = function (source, destination) {\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 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 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 };\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 if (closest(e.target, '.e-menu-wrapper').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 if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\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 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 }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\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 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 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 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 wrapper.classList.toggle(RTL);\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) {\n ul.style.display = 'block';\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 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 if (ul) {\n var validUl = isUniqueId ? ul.children[index].id : ul.children[index].textContent;\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else {\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(false)\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};\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.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.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 EventHandler.add(this.dlg, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.dlg, 'click', this.clickExHandler, this);\n };\n ExcelFilterBase.prototype.unwireExEvents = function () {\n EventHandler.remove(this.dlg, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.dlg, 'click', this.clickExHandler);\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\n && this.getLocalizedLabel(options[this.options.type]) === menuItem.innerText.trim()) {\n this.hoverHandler(e);\n }\n }\n };\n ExcelFilterBase.prototype.destroyCMenu = function () {\n this.isCMenuOpen = false;\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\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 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.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 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.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: false,\n target: document.body,\n // target: this.parent.element,\n visible: false,\n enableRtl: this.parent.enableRtl,\n open: function () {\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.push(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' });\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.push(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 };\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' });\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.push(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.push(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);\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.push(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.push(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.push(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.push(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.push(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 } 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 } 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) || (this.parent.getFrozenMode() === literals.leftRight &&\n DataUtil.getObject('args.renderFrozenRightContent', 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' });\n var row = this.generateRow();\n row.data = this.values;\n if (gObj.getFrozenMode() === 'Right') {\n var thead = gObj.getFrozenRightHeader().querySelector('thead');\n thead.appendChild(rowRenderer.element);\n }\n else {\n this.parent.getHeaderContent().querySelector('thead:not(.e-masked-thead)').appendChild(rowRenderer.element);\n }\n var rowdrag = this.parent.element.querySelector('.e-rowdragheader');\n this.element = rowRenderer.render(row, gObj.getColumns(), null, null, rowRenderer.element);\n var detail = this.element.querySelector('.e-detailheadercell');\n if (detail) {\n detail.className = 'e-filterbarcell e-mastercell';\n }\n if (rowdrag) {\n rowdrag.className = 'e-dragheadercell e-mastercell';\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 /**\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.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 if (this.element) {\n if (this.element.parentElement) {\n remove(this.element);\n }\n var filterBarElement = this.parent.getHeaderContent().querySelector('.e-filterbar');\n if (this.parent.isFrozenGrid() && 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.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 this.parent.removeEventListener(events.beforeDataBound, this.refreshFilterValueFn);\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);\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.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.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 * @returns {void}\n */\n Filter.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n var _this = this;\n var gObj = this.parent;\n var filterCell;\n this.column = gObj.grabColumnByFieldFromAllCols(fieldName);\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.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 gObj.getColumnHeaderByField(this.column.isForeignColumn() ? this.column.field : fieldName).setAttribute('aria-filtered', 'true');\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 (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 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 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)].removeAttribute('aria-filtered');\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].removeAttribute('aria-filtered');\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 && 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.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.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 };\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 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 fltrElement.removeAttribute('aria-filtered');\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') {\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)].field);\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 }\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 && this.parent.isFrozenGrid()) {\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);\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 ((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-popup-wrapper')\n && (!closest(target, '.e-filter-item.e-menu-item'))) && !datepickerEle) {\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;\n this.filterModule.closeDialog(target);\n }\n }\n }\n };\n Filter.prototype.filterHandler = function (args) {\n this.actualPredicate[args.field] = args.actualPredicate;\n var dataManager = new DataManager(this.filterSettings.columns);\n var query = new Query().where('field', this.filterOperators.equal, args.field);\n var result = dataManager.executeLocal(query);\n for (var i = 0; i < result.length; i++) {\n var index = -1;\n for (var j = 0; j < this.filterSettings.columns.length; j++) {\n if (result[parseInt(i.toString(), 10)].field === 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 { 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 this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, 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 { 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.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 (params) {\n if (params === void 0) { params = { args: { isFrozen: false } }; }\n if (!params.args.isFrozen) {\n this.removeSortIcons();\n this.isMultiSort = true;\n this.removeSortIcons();\n this.addSortIcons();\n this.isMultiSort = false;\n this.updateAriaAttr();\n }\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 { 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 } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\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.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.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 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.indexOf('Search') > -1) {\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 };\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.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 this.bindSearchEvents();\n };\n Toolbar.prototype.createToolbar = function () {\n var items = this.getItems();\n this.toolbar = new tool({\n items: items,\n clicked: this.toolbarClickHandler.bind(this),\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n created: this.toolbarCreated.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.toolbar.isReact = this.parent.isReact;\n this.toolbar.on('render-react-toolbar-template', this.addReactToolbarPortals, this);\n var isStringTemplate = 'isStringTemplate';\n this.toolbar[\"\" + isStringTemplate] = true;\n var viewStr = 'viewContainerRef';\n var registerTemp = 'registeredTemplate';\n if (this.parent[\"\" + viewStr]) {\n this.toolbar[\"\" + registerTemp] = {};\n this.toolbar[\"\" + viewStr] = this.parent[\"\" + viewStr];\n }\n this.element = this.parent.createElement('div', { id: this.gridID + '_toolbarItems' });\n if (this.parent.enableAdaptiveUI) {\n this.element.classList.add('e-res-toolbar');\n }\n if (this.parent.toolbarTemplate) {\n if (typeof (this.parent.toolbarTemplate) === 'string') {\n this.toolbar.appendTo(this.parent.toolbarTemplate);\n this.element = this.toolbar.element;\n }\n else {\n var isReactCompiler = this.parent.isReact && typeof (this.parent.toolbarTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var ID = this.parent.element.id + 'toolbarTemplate';\n if (isReactCompiler || isReactChild) {\n templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate', ID, null, null, this.element);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate'));\n }\n }\n this.element.classList.add('e-temp-toolbar');\n }\n else {\n this.toolbar.appendTo(this.element);\n }\n this.parent.element.insertBefore(this.element, this.parent.getHeaderContent());\n var tlbrLeftElement = this.element.querySelector('.e-toolbar-left');\n var tlbrCenterElement = this.element.querySelector('.e-toolbar-center');\n var tlbrRightElement = this.element.querySelector('.e-toolbar-right');\n var tlbrItems = this.element.querySelector('.e-toolbar-items');\n var tlbrElement = this.element;\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 (tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth || tlbrItemsWidth > tlbrWidth) {\n this.toolbar.refreshOverflow();\n }\n };\n Toolbar.prototype.addReactToolbarPortals = function (args) {\n if (this.parent.isReact && args) {\n this.parent.portals = this.parent.portals.concat(args);\n this.parent.renderTemplates();\n }\n };\n Toolbar.prototype.renderResponsiveSearch = function (isRender) {\n if (isRender) {\n this.toolbarCreated(true);\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isSearch);\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.add('e-responsive-right');\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n this.searchBoxObj.searchFocus({ target: this.searchElement });\n this.searchElement.focus();\n }\n else {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n Toolbar.prototype.refreshResponsiveToolbarItems = function (action) {\n if (action === ResponsiveToolbarAction.isInitial) {\n var id = this.parent.element.id;\n var items = [id + '_edit', id + '_delete'];\n var selectedRecords = this.parent.getSelectedRowIndexes();\n var excludingItems = [id + '_responsiveback', id + '_update', id + '_cancel'];\n for (var _i = 0, _a = this.toolbar.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var toolbarEle = item.template.length ? this.toolbar.element.querySelector(item.template) : this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n if (selectedRecords.length) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n else {\n if (excludingItems.indexOf(item.id) === -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n if (this.searchElement) {\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.remove('e-responsive-right');\n this.toolbarCreated(false);\n this.unWireEvent();\n this.searchElement = undefined;\n }\n }\n if (action === ResponsiveToolbarAction.isSearch) {\n var items = [this.parent.element.id + '_responsiveback', this.parent.element.id + '_search'];\n for (var _b = 0, _c = this.toolbar.items; _b < _c.length; _b++) {\n var item = _c[_b];\n var toolbarEle = this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.refreshToolbarItems = function (args) {\n var gObj = this.parent;\n var enableItems = [];\n var disableItems = [];\n var edit = gObj.editSettings;\n var hasData = gObj.currentViewData && gObj.currentViewData.length;\n if (edit.allowAdding) {\n enableItems.push(this.gridID + '_add');\n }\n else {\n disableItems.push(this.gridID + '_add');\n }\n if (edit.allowEditing && hasData) {\n enableItems.push(this.gridID + '_edit');\n }\n else {\n disableItems.push(this.gridID + '_edit');\n }\n if (edit.allowDeleting && hasData) {\n enableItems.push(this.gridID + '_delete');\n }\n else {\n disableItems.push(this.gridID + '_delete');\n }\n if (gObj.editSettings.mode === 'Batch') {\n if (gObj.element.getElementsByClassName('e-updatedtd').length && (edit.allowAdding || edit.allowEditing)) {\n enableItems.push(this.gridID + '_update');\n enableItems.push(this.gridID + '_cancel');\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n else {\n if (gObj.isEdit && (edit.allowAdding || edit.allowEditing)) {\n enableItems = [this.gridID + '_update', this.gridID + '_cancel'];\n disableItems = [this.gridID + '_add', this.gridID + '_edit', this.gridID + '_delete'];\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n this.enableItems(enableItems, true);\n this.enableItems(disableItems, false);\n };\n Toolbar.prototype.getItems = function () {\n var items = [];\n var toolbarItems = this.parent.toolbar || [];\n if (typeof (this.parent.toolbar) === 'string') {\n return [];\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n items.push(this.getItemObject('responsiveFilter'));\n }\n if (this.parent.allowSorting) {\n items.push(this.getItemObject('responsiveSort'));\n }\n }\n for (var _i = 0, toolbarItems_1 = toolbarItems; _i < toolbarItems_1.length; _i++) {\n var item = toolbarItems_1[_i];\n switch (typeof item) {\n case 'number':\n items.push(this.getItemObject(this.items[item]));\n break;\n case 'string':\n items.push(this.getItemObject(item));\n break;\n default:\n items.push(this.getItem(item));\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n items.push(this.getItemObject('responsiveBack'));\n }\n return items;\n };\n Toolbar.prototype.getItem = function (itemObject) {\n var item = this.predefinedItems[itemObject.text];\n return item ? extend(item, item, itemObject) : itemObject;\n };\n Toolbar.prototype.getItemObject = function (itemName) {\n return this.predefinedItems[\"\" + itemName] || { text: itemName, id: this.gridID + '_' + itemName };\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 * @returns {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n var element = select('#' + item, this.element);\n if (element) {\n this.toolbar.enableItems(element.parentElement, isEnable);\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var _this = this;\n var gObj = this.parent;\n var gID = this.gridID;\n extend(args, { cancel: false });\n var newArgs = args;\n var originalEvent = args.originalEvent;\n gObj.trigger(events.toolbarClick, newArgs, function (toolbarargs) {\n toolbarargs.originalEvent = toolbarargs.originalEvent ? toolbarargs.originalEvent : originalEvent;\n if (!toolbarargs.cancel) {\n switch (!isNullOrUndefined(toolbarargs.item) && toolbarargs.item.id) {\n case gID + '_print':\n gObj.print();\n break;\n case gID + '_edit':\n gObj.startEdit();\n break;\n case gID + '_update':\n gObj.endEdit();\n break;\n case gID + '_cancel':\n gObj.closeEdit();\n break;\n case gID + '_add':\n gObj.addRecord();\n break;\n case gID + '_delete':\n gObj.deleteRecord();\n break;\n case gID + '_search':\n if (toolbarargs.originalEvent.target.id === gID + '_searchbutton' && _this.searchElement) {\n _this.search();\n }\n else if (gObj.enableAdaptiveUI && !_this.searchElement\n && (toolbarargs.originalEvent.target.classList.contains('e-search-wrapper')\n || toolbarargs.originalEvent.target.id === gID + '_searchbutton')) {\n _this.renderResponsiveSearch(true);\n }\n else if (toolbarargs.originalEvent.target.classList.contains('e-clear-icon') && toolbarargs.originalEvent.target.id === gID + '_clearbutton' && _this.searchElement) {\n _this.searchElement.value = '';\n if (_this.searchElement) {\n _this.sIcon = _this.searchElement.parentElement.querySelector('.e-sicon');\n _this.sIcon.classList.remove('e-clear-icon');\n _this.sIcon.removeAttribute('title');\n _this.sIcon.style.cursor = 'default';\n }\n if (_this.isSearched || _this.parent.searchSettings.key.length) {\n _this.parent.search(_this.searchElement.value);\n _this.isSearched = false;\n }\n }\n break;\n case gID + '_columnchooser':\n /* eslint-disable */\n var tarElement = _this.parent.element.querySelector('.e-ccdiv');\n var y = tarElement.getBoundingClientRect().top;\n var x = tarElement.getBoundingClientRect().left;\n var targetEle = toolbarargs.originalEvent.target;\n /* eslint-enable */\n y = tarElement.getBoundingClientRect().top + tarElement.offsetTop;\n gObj.createColumnchooser(x, y, targetEle);\n break;\n case gID + '_responsivefilter':\n gObj.showResponsiveCustomFilter();\n break;\n case gID + '_responsivesort':\n gObj.showResponsiveCustomSort();\n break;\n case gID + '_responsiveback':\n _this.renderResponsiveSearch(false);\n break;\n }\n }\n });\n };\n Toolbar.prototype.modelChanged = function (e) {\n if (e.module === 'edit') {\n this.refreshToolbarItems();\n }\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() || !this.parent.toolbar) {\n return;\n }\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.keyUpHandler = function (e) {\n if (e.keyCode === 13) {\n this.search();\n }\n if (this.searchElement) {\n this.sIcon = this.searchElement.parentElement.querySelector('.e-sicon');\n if (this.searchElement.value.length && !isNullOrUndefined(this.sIcon)) {\n this.sIcon.classList.add('e-clear-icon');\n this.sIcon.setAttribute('title', 'Clear');\n this.sIcon.style.cursor = 'pointer';\n }\n else {\n this.sIcon.classList.remove('e-clear-icon');\n this.sIcon.removeAttribute('title');\n this.sIcon.style.cursor = 'default';\n }\n }\n };\n Toolbar.prototype.search = function () {\n this.isSearched = true;\n this.parent.search(this.searchElement.value);\n };\n Toolbar.prototype.updateSearchBox = function () {\n if (this.searchElement) {\n this.searchElement.value = this.parent.searchSettings.key;\n }\n };\n Toolbar.prototype.wireEvent = function () {\n if (this.searchElement) {\n this.searchBoxObj = new SearchBox(this.searchElement);\n EventHandler.add(this.searchElement, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n };\n Toolbar.prototype.unWireEvent = function () {\n if (this.searchElement) {\n EventHandler.remove(this.searchElement, 'keyup', this.keyUpHandler);\n this.searchBoxObj.unWireEvent();\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n };\n Toolbar.prototype.onFocusIn = function (e) {\n var currentInfo = this.parent.focusModule.currentInfo;\n if (currentInfo && currentInfo.element) {\n removeClass([currentInfo.element, currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n currentInfo.element.tabIndex = -1;\n }\n e.target.tabIndex = 0;\n };\n Toolbar.prototype.onFocusOut = function (e) {\n e.target.tabIndex = -1;\n };\n Toolbar.prototype.setFocusToolbarItem = function (element) {\n var elementToFocus = element.querySelector('.e-btn,.e-input,.e-toolbar-item-focus');\n if (!elementToFocus && this.parent.enableAdaptiveUI && !this.searchElement\n && element.classList.contains('e-search-wrapper')) {\n elementToFocus = element.querySelector('#' + this.gridID + '_searchbutton');\n }\n elementToFocus.focus();\n };\n Toolbar.prototype.getFocusableToolbarItems = function () {\n var getFocusToolbarElements = [].slice.call(this.element.querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)'));\n var getFocusToolbarItems = [];\n for (var i = 0; i < getFocusToolbarElements.length; i++) {\n if (!isNullOrUndefined(getFocusToolbarElements[parseInt(i.toString(), 10)].querySelector('.e-btn,.e-input,.e-toolbar-item-focus'))) {\n getFocusToolbarItems.push(getFocusToolbarElements[parseInt(i.toString(), 10)]);\n }\n }\n return getFocusToolbarItems;\n };\n Toolbar.prototype.keyPressedHandler = function (e) {\n if (e.target && parentsUntil(e.target, 'e-toolbar-item')) {\n var targetParent = parentsUntil(e.target, 'e-toolbar-item');\n var focusableToolbarItems = this.getFocusableToolbarItems();\n if (e.action === 'tab' || e.action === 'shiftTab') {\n if ((e.action === 'tab' && targetParent === focusableToolbarItems[focusableToolbarItems.length - 1])\n || (e.action === 'shiftTab' && targetParent === focusableToolbarItems[0])) {\n return;\n }\n for (var i = 0; i < focusableToolbarItems.length; i++) {\n if (targetParent === focusableToolbarItems[parseInt(i.toString(), 10)]) {\n e.preventDefault();\n var index = e.action === 'tab' ? i + 1 : i - 1;\n this.setFocusToolbarItem(focusableToolbarItems[parseInt(index.toString(), 10)]);\n return;\n }\n }\n }\n if (e.action === 'enter') {\n if (this.parent.enableAdaptiveUI && !this.searchElement\n && e.target.id === this.gridID + '_searchbutton') {\n this.renderResponsiveSearch(true);\n }\n }\n }\n };\n Toolbar.prototype.reRenderToolbar = function () {\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.reRenderToolbar },\n { event: events.initialEnd, handler: this.render },\n { event: events.uiUpdate, handler: this.onPropertyChanged },\n { event: events.inBoundModelChanged, handler: this.updateSearchBox.bind(this) },\n { event: events.modelChanged, handler: this.refreshToolbarItems },\n { event: events.toolbarRefresh, handler: this.refreshToolbarItems },\n { event: events.inBoundModelChanged, handler: this.modelChanged },\n { event: events.dataBound, handler: this.refreshToolbarItems },\n { event: events.click, handler: this.removeResponsiveSearch },\n { event: events.rowModeChange, handler: this.reRenderToolbar },\n { event: events.destroy, handler: this.destroy },\n { event: events.keyPressed, handler: this.keyPressedHandler }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.rowSelectedFunction = this.rowSelected.bind(this);\n this.rowDeSelectedFunction = this.rowSelected.bind(this);\n this.parent.addEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.addEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.removeEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeResponsiveSearch = function (e) {\n var target = e.target;\n var isSearch = target.classList.contains('e-search-icon') || target.classList.contains('e-search-wrapper');\n if (this.parent.enableAdaptiveUI && !isSearch && this.searchElement\n && !parentsUntil(e.target, 'e-res-toolbar')) {\n this.renderResponsiveSearch(false);\n }\n };\n Toolbar.prototype.rowSelected = function () {\n if (this.parent.enableAdaptiveUI) {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\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 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 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","/**\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})(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","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 && rowObj[parseInt(i.toString(), 10)].data.key === key) {\n preCap = rowObj[parseInt(i.toString(), 10)];\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 } 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 } 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.viewColIndexes = [];\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 this.isRemove = false;\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 if (_this.parent.isFrozenGrid() && (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling)) {\n var tableName = args.tableName;\n _this.isLoaded = _this.parent.getFrozenMode() === literals.leftRight ? tableName === 'frozen-right' : tableName === 'movable';\n if (_this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll' && _this.isLoaded) {\n var mHdr = [].slice.call(_this.parent.getMovableVirtualHeader().getElementsByClassName(literals.row));\n var fHdr = [].slice.call(_this.parent.getFrozenVirtualHeader().getElementsByClassName(literals.row));\n _this.isLoaded = mHdr.length === fHdr.length;\n }\n }\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 if (_this.parent.isFrozenGrid()) {\n rows = args.isFrozen ? _this.freezeRows : args.renderFrozenRightContent ? _this.parent.getFrozenRightRowsObject()\n : _this.movableRows;\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\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.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 div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\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 this.ariaService.setOptions(this.getTable(), {\n multiselectable: this.parent.selectionSettings.type === 'Multiple'\n });\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\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: 'grid',\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 var dataSource = this.currentMovableRows || gObj.currentViewData;\n var contentModule = this.parent.contentModule;\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 frzCols = gObj.getFrozenColumns();\n var isFrozenGrid = this.parent.isFrozenGrid();\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n gObj.notify(events.destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n this.tempFreezeRows = [];\n var fCont = this.getPanel().querySelector('.' + literals.frozenContent);\n var mCont = this.getPanel().querySelector('.' + literals.movableContent);\n var cont = this.getPanel().querySelector('.' + literals.content);\n var tbdy;\n var tableName;\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 if (this.parent.enableVirtualization && this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll'\n && args.virtualInfo.sentinelInfo.axis === 'X') {\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n args.renderMovableContent = true;\n }\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n }\n else {\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var idx = modelData[0].cells[0].index;\n if (isFrozenGrid) {\n tableName = contentModule.setTbody(modelData, args);\n tbdy = contentModule.getTbody(tableName);\n }\n var isFrozenLeft = this.parent.getFrozenMode() === literals.leftRight && tableName === literals.frozenRight;\n /* eslint-disable */\n if (!(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* eslint-enable */\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 if (!isFrozenGrid) {\n this.tbody = this.getTable().querySelector(literals.tbody);\n }\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 && !gObj.isFrozenGrid() && 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 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 (isFrozenGrid) {\n this_1.tempFreezeRows.push(modelData[parseInt(i.toString(), 10)]);\n }\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)], tableName);\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 var isVFreorder = this_1.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && i < gObj.frozenRows && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this_1.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\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(tr);\n }\n thisRef_2.ariaService.setOptions(thisRef_2.getTable(), {\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 this_1.rowElements.push(tr);\n }\n this_1.ariaService.setOptions(this_1.getTable(), { 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 if (isFrozenGrid) {\n contentModule.splitRows(tableName);\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 = isFrozenGrid ? contentModule.getFrozenHeader(tableName) : 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 }\n if (!gObj.enableVirtualization && 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 if (isFrozenGrid) {\n contentModule.setIsFrozen(args, tableName);\n }\n this.index = idx;\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n var isVFTable = _this.parent.enableVirtualization && _this.parent.isFrozenGrid();\n if (!_this.parent.enableVirtualization && !isInfiniteScroll) {\n if (_this.parent.isFrozenGrid()) {\n remove(contentModule.getTbody(tableName));\n tbdy = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n else {\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 }\n if (isFrozenGrid && !isVFTable && !_this.parent.enableInfiniteScrolling) {\n _this.appendContent(tbdy, frag, args, tableName);\n }\n else {\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (isVFTable) {\n if (args.renderFrozenRightContent) {\n var frCont = gObj.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody);\n _this.appendContent(frCont, frag, args);\n }\n else if (!args.renderMovableContent) {\n _this.appendContent(fCont.querySelector(literals.tbody), frag, args);\n }\n else {\n _this.appendContent(mCont.querySelector(literals.tbody), frag, args);\n args.renderMovableContent = false;\n }\n if (!_this.parent.getFrozenColumns()) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n }\n else {\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\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 (!frzCols && isFrozenGrid) {\n if ((gObj.getFrozenMode() !== literals.leftRight\n && (tableName === literals.frozenLeft || tableName === literals.frozenRight))\n || (gObj.getFrozenMode() === literals.leftRight\n && (tableName === literals.frozenLeft || tableName === 'movable'))) {\n _this.refreshContentRows(extend({}, args));\n }\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n }\n }\n if (frzCols) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\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 };\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 var index = args.isFrozen ? 1 : 0;\n var frozenCols = this.parent.isFrozenGrid();\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (frozenCols && !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.isAddRows = this.infiniteCache[this.parent.pageSettings\n .currentPage][parseInt(index.toString(), 10)].length !== 0;\n }\n if (this.isAddRows) {\n var data = !frozenCols ? this.infiniteCache[this.parent.pageSettings.currentPage]\n : this.infiniteCache[this.parent.pageSettings.currentPage][parseInt(index.toString(), 10)];\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, tableName) {\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (frozenCols) {\n if (tableName === literals.frozenLeft || (this.parent.getFrozenMode() === 'Right' && tableName === literals.frozenRight)) {\n this.visibleFrozenRows.push(data);\n }\n else if (tableName === 'movable') {\n this.visibleRows.push(data);\n }\n else {\n this.rightFreezeRows.push(data);\n }\n }\n else if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function (isFreeze) {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var frozenCols = this.parent.isFrozenGrid();\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 if (frozenCols) {\n var idx = isFreeze ? 0 : 1;\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)][parseInt(idx.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)][parseInt(idx.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1][parseInt(idx.toString(), 10)]\n .slice(0, this.parent.frozenRows).concat(data);\n }\n }\n else {\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 }\n return data;\n };\n ContentRender.prototype.getReorderedVFRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\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 = [];\n if (this.parent.isFrozenGrid()) {\n this.currentMovableRows = dataSource;\n fhdrData = this.getReorderedVFRows(args);\n }\n else {\n fhdrData = this.getReorderedRows(args);\n }\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 if (args.renderMovableContent) {\n this.parent.currentViewData = this.currentMovableRows;\n this.currentMovableRows = null;\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n var frozenCols = this.parent.isFrozenGrid();\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 = !frozenCols ? rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]]) : rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]][0]);\n }\n }\n else {\n rows = frozenCols ? this.visibleFrozenRows : 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.parent.getFrozenColumns() ? this.freezeRows : this.rows;\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.getMovableRows = function () {\n var infiniteRows = this.getInfiniteMovableRows();\n return infiniteRows.length ? infiniteRows : this.movableRows;\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.parent.getFrozenColumns() ? this.freezeRowElements : this.rowElements;\n };\n /**\n * Get the Freeze pane movable content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getMovableRowElements = 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 isFrozenGrid = this.parent.isFrozenGrid();\n var frzCols = gObj.getFrozenColumns();\n var rows = [];\n if (isFrozenGrid) {\n var fRows = this.freezeRows;\n var mRows = this.movableRows;\n var rowLen = fRows.length;\n var cellLen = void 0;\n var rightRows = [];\n if (gObj.getFrozenMode() === literals.leftRight) {\n rightRows = gObj.getFrozenRightRowsObject();\n }\n for (var i = 0, row = void 0; i < rowLen; i++) {\n cellLen = mRows[parseInt(i.toString(), 10)].cells.length;\n var rightLen = rightRows.length ? rightRows[parseInt(i.toString(), 10)].cells.length : 0;\n row = fRows[parseInt(i.toString(), 10)].clone();\n for (var j = 0; j < cellLen; j++) {\n row.cells.push(mRows[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)]);\n }\n for (var k = 0; k < rightLen; k++) {\n row.cells.push(rightRows[parseInt(i.toString(), 10)].cells[parseInt(k.toString(), 10)]);\n }\n rows.push(row);\n }\n }\n else {\n rows = this.getRows();\n }\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 if (isFrozenGrid) {\n if (column.getFreezeTableName() !== 'movable') {\n if (column.getFreezeTableName() === literals.frozenRight) {\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n colIdx = idx = idx - (left + movable);\n var colG = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(literals.colGroup);\n setStyleAttribute(colG.childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n contentrows = gObj.getFrozenRightRowsObject();\n tr = gObj.getFrozenRightDataRows();\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n var infiniteFreezeData = this.infiniteRowVisibility(true);\n contentrows = infiniteFreezeData ? infiniteFreezeData : this.freezeRows;\n tr = gObj.getDataRows();\n }\n }\n else {\n var mTable = gObj.getContent().querySelector('.' + literals.movableContent).querySelector(literals.colGroup);\n colIdx = idx = idx - frzCols - this.parent.getFrozenLeftColumnsCount();\n setStyleAttribute(mTable.childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n tr = gObj.getMovableDataRows();\n var infiniteMovableData = this.infiniteRowVisibility();\n contentrows = infiniteMovableData ? infiniteMovableData : this.movableRows;\n }\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n if (isFrozenGrid) {\n this.parent.notify(events.freezeRender, { case: 'refreshHeight', isModeChg: true });\n }\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 if (!this.parent.getFrozenColumns()) {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: this.freezeRows, args: { isFrozen: true, rows: this.freezeRows } });\n this.parent.notify(events.partialRefresh, { rows: this.movableRows, args: { isFrozen: false, rows: this.movableRows } });\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 = isFreeze ? this.getCurrentBlockInfiniteRecords(true) : 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 = void 0;\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n colGroup = this.parent.getMovableVirtualHeader()\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n }\n else {\n colGroup = this.getHeaderColGroup();\n }\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 isFrozen = this.parent.isFrozenGrid();\n if (isFrozen && this.parent.enableVirtualization) {\n return;\n }\n if (isFrozen) {\n var rows = this.getMovableRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].isSelected = set;\n }\n }\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.getMovableRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getMovableDataRows()[parseInt(index.toString(), 10)] : undefined;\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 } 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');\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\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.getFrozenLeftColumnsCount() && !this.parent.getFrozenRightColumnsCount()) {\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 if (!this.parent.getFrozenColumns() && !this.parent.getFrozenRightColumnsCount() && !this.parent.getFrozenLeftColumnsCount()) {\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.isFrozenGrid() } });\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 var isFrozen = gObj.isFrozenGrid();\n if (this.getTable() && !isFrozen) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'grid' } });\n var tblName = tableName ? tableName : gObj.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n var findHeaderRow = this.createHeaderContent(tblName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ? '' : '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');\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 if (isFrozen && gObj.allowResizing) {\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent).querySelector('.' + literals.table);\n if (tableName === 'movable' && !isNullOrUndefined(movableContent)) {\n table.style.width = movableContent.style.width;\n }\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 this.ariaService.setOptions(table, { colcount: gObj.getColumns().length.toString() });\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 index = 1;\n var frozenMode = gObj.getFrozenMode();\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' });\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 if (frozenMode !== 'Right') {\n rows = this.ensureColumns(rows);\n }\n rows = this.getHeaderCells(rows, tableName);\n if (frozenMode === 'Right') {\n index = 0;\n rows = this.ensureColumns(rows);\n }\n var frzCols = this.parent.getFrozenColumns();\n if (this.parent.isRowDragable() && this.parent.isFrozenGrid() && rows[0].cells[parseInt(index.toString(), 10)]) {\n var colFreezeMode = rows[0].cells[parseInt(index.toString(), 10)].column.getFreezeTableName();\n if (tableName === 'movable' && this.getStackedLockColsCount.length) {\n for (var j = 0, len = rows.length; j < len; j++) {\n if (frozenMode === 'Right') {\n rows[parseInt(j.toString(), 10)].cells.pop();\n }\n else {\n rows[parseInt(j.toString(), 10)].cells.shift();\n }\n }\n }\n else if ((colFreezeMode === 'movable' || (frozenMode === literals.leftRight &&\n colFreezeMode === literals.frozenRight))) {\n if (frozenMode === 'Right') {\n rows[0].cells.pop();\n }\n else {\n rows[0].cells.shift();\n }\n }\n else if (!frzCols && colFreezeMode === literals.frozenLeft) {\n rows[0].cells[0].column.freeze = colFreezeMode === literals.frozenLeft ? 'Left' : 'Right';\n }\n else if (frozenMode === 'Right' && colFreezeMode === literals.frozenRight) {\n rows[0].cells[rows[0].cells.length - 1].column.freeze = 'Right';\n }\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 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 if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n cols = extend([], this.parent.getColumns());\n cols.splice(0, this.parent.getFrozenColumns());\n }\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()) {\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 < cols.length; 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 = cols.length; 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 isFrozen = this.parent.isFrozenGrid();\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n var isFrozenLockColumn = !this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered)\n || (!cols.lockColumn && this.lockColsRendered);\n var scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var left;\n if (isFrozen && scrollbar && this.parent.enableColumnVirtualization) {\n left = scrollbar.scrollLeft;\n }\n if (!cols.columns) {\n if (left && left > 0 && this.parent.contentModule.isXaxis()\n && this.parent.inViewIndexes[0] !== 0 && cols.getFreezeTableName() === 'movable') {\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 else {\n if ((!isFrozen && isLockColumn) || (isFrozen && cols.getFreezeTableName() === tableName && isFrozenLockColumn)) {\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 }\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 var isFrozenStack = isFrozen && this.ensureStackedFrozen(cols.columns, tableName, false);\n if ((!isFrozen && isStackedLockColumn) || isFrozenStack) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount, cols.columns, tableName, isFrozen),\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.ensureStackedFrozen = function (columns, tableName, isTrue) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n isTrue = this.ensureStackedFrozen(columns[parseInt(i.toString(), 10)].columns, tableName, isTrue);\n }\n else if (columns[parseInt(i.toString(), 10)].getFreezeTableName() === tableName) {\n isTrue = true;\n break;\n }\n }\n return isTrue;\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, columns, tableName, isFrozen) {\n if (isFrozen) {\n colSpan = this.getFrozenColSpan(columns, tableName, 0);\n }\n else if (this.parent.lockcolPositionCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n }\n return colSpan;\n };\n HeaderRender.prototype.getFrozenColSpan = function (columns, tableName, count) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n count = this.getFrozenColSpan(columns[parseInt(i.toString(), 10)].columns, tableName, count);\n }\n else if (columns[parseInt(i.toString(), 10)].getFreezeTableName() === tableName\n && columns[parseInt(i.toString(), 10)].visible) {\n count++;\n }\n }\n return count;\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 var frzCols = gObj.getFrozenColumns();\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 if (frzCols) {\n var normalizedfrzCols = this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n if (idx < normalizedfrzCols) {\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.colGroup);\n setStyleAttribute(mTblColGrp.children[idx - normalizedfrzCols], { 'display': displayVal });\n }\n }\n else {\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n this.refreshUI();\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 frzCols = this.parent.isFrozenGrid();\n var isVFTable = this.parent.enableColumnVirtualization && frzCols;\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 = this.parent.isFrozenGrid() ? this.parent.getFrozenLeftCount() ? 'frozen-left'\n : 'frozen-right' : undefined;\n if (isVFTable) {\n table = this.parent.contentModule.getVirtualFreezeHeader();\n tableName = this.parent.contentModule.isXaxis() ? 'movable' : tableName;\n }\n if (table) {\n remove(table);\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 if (!isVFTable) {\n this.setTable(table);\n }\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n if (!frzCols || (this.parent.enableColumnVirtualization && frzCols)) {\n this.initializeHeaderDrag();\n }\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, args: { isFrozen: frzCols } });\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 };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\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 _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","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 } 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' } });\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('CheckBoxLabel') } });\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 (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) {\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 node.setAttribute('aria-description', elementDesc);\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 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 } 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'\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'));\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 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';\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 for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; 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 if (gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate.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)].groupCaptionTemplate.split('}')[1];\n }\n else {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n }\n break;\n }\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 result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\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 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 ? 'expanded' : '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 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';\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' }\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 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';\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 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 return;\n }\n if (gObj.allowSelection && (args.action === 'clearFilter' || (args.requestType === 'searching' && args.searchString === '') ||\n 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) {\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 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 if (this.parent.getForeignKeyColumns().length && (!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 (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 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 = 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var tr = this.parent.createElement('tr', { className: 'e-emptyrow' });\n tr.appendChild(this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() }\n }));\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\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 }\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') {\n _this.parent.notify(events.commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = _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 }, 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 = _this.parent.getFrozenColumns() !== 0 && !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.getHeaderTable(), {\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 if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n }\n prepareColumns(this.parent.columns, null, this.parent);\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 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 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 uGroup = 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 elements[parseInt(i.toString(), 10)].count = uGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, uGroup.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 types = row.columns[parseInt(k.toString(), 10)].type instanceof Array ?\n (row.columns[parseInt(k.toString(), 10)].type) :\n [(row.columns[parseInt(k.toString(), 10)].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[parseInt(k.toString(), 10)].field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n var temp = row.columns[parseInt(k.toString(), 10)]\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 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 } 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 };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col) {\n var _this = this;\n var gObj = this.parent;\n if (col) {\n this.filterParent = this.parent.createElement('div', { className: 'e-mainfilterdiv e-default-filter', id: col.uid + '-main-filter' });\n return this.filterParent;\n }\n else {\n var cols = gObj.getColumns();\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv', styles: 'width: 100%' });\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 EventHandler.add(this.customColumnDiv, '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 if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n var gObj = this.parent;\n var target = e.target;\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 column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col) {\n if (this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) {\n this.renderCustomFilterDialog();\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.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 }\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) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'customfilter',\n className: this.parent.cssClass ?\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true);\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) {\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),\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 options.cssClass = '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 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 }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\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 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 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 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.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 }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\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, '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","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","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { 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 } from '../base/util';\nimport { getCellsByTableName, getCellByColAndRowIndex, parentsUntil, gridActionHandler } 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.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\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 /**\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.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.isPersistSelection;\n };\n Selection.prototype.getSelectedMovableRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && this.parent.getContent().querySelector('.' + literals.movableContent)) {\n return gObj.getMovableRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getSelectedFrozenRightRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && gObj.getFrozenMode() === literals.leftRight && gObj.getFrozenRightContent()) {\n return gObj.getFrozenRightRowByIndex(index);\n }\n return null;\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 {\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 selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\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 var frozenData = gObj.isFrozenGrid() ? gObj.contentModule.getRowObjectByIndex(index)\n : null;\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')) || frozenData)) {\n selectData = frozenData ? frozenData : 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 isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\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 args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\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 var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, 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 args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n Selection.prototype.selectMovableRow = function (selectedMovableRow, selectedFrozenRightRow, index) {\n if (this.parent.isFrozenGrid()) {\n this.updateRowSelection(selectedMovableRow, index);\n if (this.parent.getFrozenMode() === literals.leftRight && selectedFrozenRightRow) {\n this.updateRowSelection(selectedFrozenRightRow, index);\n }\n }\n };\n Selection.prototype.addMovableArgs = function (targetObj, mRow, frRow) {\n if (this.parent.isFrozenGrid()) {\n var mObj = { mRow: mRow, previousMovRow: this.parent.getMovableRows()[this.prevRowIndex] };\n var frozenRightRow = 'frozenRightRow';\n var previousFrozenRightRow = 'previousFrozenRightRow';\n if (this.parent.getFrozenMode() === literals.leftRight && frRow) {\n mObj[\"\" + frozenRightRow] = frRow;\n mObj[\"\" + previousFrozenRightRow] = this.parent.getFrozenRightDataRows()[this.prevRowIndex];\n }\n targetObj = __assign({}, targetObj, mObj);\n }\n return targetObj;\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 selectedMovableRow = this.getSelectedMovableRow(rowIndex);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(rowIndex);\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 args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\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 _this.clearRow();\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n if (gObj.isFrozenGrid()) {\n var rightEle = _this.parent.getFrozenMode() === literals.leftRight ? gObj.getFrozenRightRowByIndex(index)\n : undefined;\n _this.selectMovableRow(gObj.getMovableRowByIndex(index), rightEle, index);\n }\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 args = _this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\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 var selectedMovableRow = !this.isSingleSel() ? this.getSelectedMovableRow(rowIndexes[0]) :\n this.getSelectedMovableRow(rowIndexes[rowIndexes.length - 1]);\n var selectedFrozenRightRow = !this.isSingleSel() ? this.getSelectedFrozenRightRow(rowIndexes[0]) :\n this.getSelectedFrozenRightRow(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 if (selectedMovableRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedMovableRow), 1);\n selectedMovableRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedMovableRow, false, null, 'e-selectionbackground', 'e-active');\n }\n if (selectedFrozenRightRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedFrozenRightRow), 1);\n selectedFrozenRightRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedFrozenRightRow, false, null, 'e-selectionbackground', 'e-active');\n }\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, [selectedMovableRow], undefined, [selectedFrozenRightRow]);\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 args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\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 this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, 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 args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\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 this.selectedRowIndexes.push(startIndex);\n var len = this.selectedRowIndexes.length;\n if (this.parent.isFrozenGrid() && len > 1) {\n if ((this.selectedRowIndexes[len - 2] === this.selectedRowIndexes[len - 1])) {\n this.selectedRowIndexes.pop();\n }\n }\n this.selectedRecords.push(selectedRow);\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 gObj = this.parent;\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var mRow_1 = [];\n var fRightRow_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\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 if (gObj.isFrozenGrid()) {\n var mRows = gObj.getMovableRows();\n if (mRows && mRows.length) {\n mRow_1.push(mRows[this.selectedRowIndexes[parseInt(i.toString(), 10)]]);\n }\n if (gObj.getFrozenMode() === literals.leftRight) {\n var frRows = gObj.getFrozenRightRows();\n if (frRows && frRows.length) {\n fRightRow_1.push(frRows[this.selectedRowIndexes[parseInt(i.toString(), 10)]]);\n }\n }\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, mRow_1, 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 for (var i = 0, len = _this.selectedRowIndexes.length; i < len; i++) {\n var movableRow = _this.getSelectedMovableRow(_this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n if (movableRow) {\n if (!_this.disableUI) {\n movableRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(movableRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(movableRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(movableRow, false);\n }\n }\n var frRow = _this.getSelectedFrozenRightRow(_this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n if (frRow) {\n if (!_this.disableUI) {\n frRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(frRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(frRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(frRow, false);\n }\n }\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, mRow_1, undefined, fRightRow_1);\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 }, fRightRow_1);\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, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || 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, this.parent.isFrozenGrid() ? __assign({}, rowDeselectObj, { mRow: mRow, frozenRightRow: frozenRightRow }) : 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 if (mRow) {\n _this.updateCheckBoxes(mRow[0], undefined, rowIndex[0]);\n }\n if (frozenRightRow) {\n _this.updateCheckBoxes(frozenRightRow[0], undefined, rowIndex[0]);\n }\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 Selection.prototype.getSelectedMovableCell = function (cellIndex) {\n var gObj = this.parent;\n var col = gObj.getColumnByIndex(cellIndex.cellIndex);\n var frzCols = gObj.isFrozenGrid();\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n return gObj.getMovableCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n return null;\n }\n return null;\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 selectedCell = this.getSelectedMovableCell(cellIndex);\n var args;\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\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.getFrozenColumns() ? (cIdx >= this.parent.getFrozenColumns() ? this.parent.getMovableCellFromIndex(rIdx, cIdx)\n : this.parent.getCellFromIndex(rIdx, cIdx)) : 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.getSelectedMovableCell(startIndex);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n }\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 if (frzCols) {\n if (j < frzCols) {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(i, j);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\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 = this.getSelectedMovableCell(rowCellIndexes[0]);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n }\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 if (frzCols) {\n if (rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] < frzCols) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\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 var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var col = gObj.getColumnByIndex(cellIndexes[0].cellIndex);\n var rowObj;\n gridActionHandler(this.parent, function (tableName, rows) {\n rowObj = rows[cellIndexes[0].rowIndex];\n }, [\n !col.getFreezeTableName() || col.getFreezeTableName() === literals.frozenLeft ? gObj.getRowsObject() : [],\n col.getFreezeTableName() === 'movable' ? gObj.getMovableRowsObject() : [],\n col.getFreezeTableName() === literals.frozenRight ? gObj.getFrozenRightRowsObject() : []\n ]);\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 = this.getSelectedMovableCell(cellIndex);\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var idx = col.getFreezeTableName() === 'movable' ? cellIndex.cellIndex - left\n : col.getFreezeTableName() === literals.frozenRight ? cellIndex.cellIndex - (left + movable) : 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) {\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 frzCols = this.parent.isFrozenGrid();\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 if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n m += this.parent.getFrozenLeftCount();\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n m += (this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount());\n }\n }\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getFrozenColumns() ? this.parent.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell')\n : 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[0] && cells[0].classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cells[0], 'tr'));\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 var frzCols = gObj.isFrozenGrid();\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 (frzCols) {\n var col = gObj.getColumnByIndex(rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]);\n cells.push(getCellByColAndRowIndex(this.parent, col, rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n else {\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 }\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 mRows;\n if (gObj.isFrozenGrid()) {\n mRows = gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, mRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\n rows = gObj.addMovableRows(rows, gObj.getFrozenRightDataRows());\n }\n }\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 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 this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.dataColIndex), 10));\n }\n }\n }\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.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 }\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) {\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 var rowHeight = this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = this.parent.frozenRows && (bdrStr === '1' || bdrStr === '2') &&\n this.isFirstRow(start) ? 1.5 : 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 + 1) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + 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.contentModule.getMovableContent(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.contentModule.getFrozenRightContent(), 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.headerModule.getMovableHeader(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.headerModule.getFrozenRightHeader(), 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.contentModule.getMovableContent().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.contentModule.getFrozenRightContent().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.headerModule.getMovableHeader().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.headerModule.getFrozenRightHeader().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) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.display = display;\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;\n var totalWidth = this.parent.element.clientWidth;\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 this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\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 this.bdrAFTop.style.left = '0px';\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.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 if (this.parent.isFrozenGrid()) {\n cells = cells.concat([].slice.call(this.parent.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls)));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n cells = cells.concat([].slice.call(this.parent.getFrozenRightDataRows()[parseInt(rowIndex.toString(), 10)]\n .querySelectorAll(cls)));\n }\n }\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 document.body.classList.remove('e-disableuserselect');\n if (this.element) {\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 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 this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n this.isAutoFillSel = 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 (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.contentModule.getMovableContent().appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.headerModule.getMovableHeader().appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getFrozenRightHeader().appendChild(this.autofill);\n }\n else {\n this.parent.getFrozenRightContent().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 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.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 };\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) && this.selectionSettings.type === 'Single') {\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 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 (e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isLeftRightFrozen = this.parent.getFrozenMode() === literals.leftRight;\n if ((!isFrozen || (isFrozen && (!isLeftRightFrozen && !e.args.isFrozen)\n || (isLeftRightFrozen && e.args.renderFrozenRightContent))) && !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()) ? 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 for (var _d = 0, _e = this.parent.currentViewData; _d < _e.length; _d++) {\n var data = _e[_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)\n .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 if (this.parent.isCheckBoxSelection && this.parent.isFrozenGrid()) {\n var mtbody = this.parent.getMovableContentTbody();\n if (mtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getMovableRows();\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frtbody = this.parent.getFrozenRightContentTbody();\n if (frtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getFrozenRightRows();\n }\n }\n }\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 (this.parent.getDataModule().isRemote() && 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() && this.parent.isPersistSelection) {\n for (var i = 0; i < this.getCurrentBatchRecordChanges().length; i++) {\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 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 rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\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') {\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 };\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.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.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) && (this.parent.searchSettings.key.length\n || 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 if ((checkToSelectAll && isFiltered && (this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n this.getData().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 this.getData().length && checkedLen === this.getData().length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && ((checkedLen === this.parent.totalDataRecordsCount) || (this.isSelectAllRowCount(checkedLen) &&\n !this.parent.isPersistSelection))) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))))) {\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.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.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.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 (((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 gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\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 ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n }\n this.parent.hoverFrozenRows(e);\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.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 > (this.parent.getFrozenColumns() ? 2 : 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 this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\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 = this.parent.isFrozenGrid() ? (((e.container.isHeader && e.element.tagName !== 'TD' && e.isJump &&\n !this.selectionSettings.allowColumnSelection) ||\n ((e.container.isContent || e.element.tagName === 'TD') && !(e.container.isSelectable || e.element.tagName === 'TD')))\n && !(e.byKey && e.keyArgs.action === 'space')) : ((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 (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : 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.isFrozenGrid()) {\n var cIdx = Number(e.element.getAttribute(literals.dataColIndex));\n var selectedIndexes = this.parent.getSelectedRowCellIndexes();\n if (selectedIndexes.length && prev.cellIndex === 0) {\n prev.cellIndex = selectedIndexes[selectedIndexes.length - 1].cellIndexes[0];\n }\n prev.cellIndex = !isNullOrUndefined(prev.cellIndex) ? (prev.cellIndex === cellIndex ? cIdx : cIdx - 1) : null;\n cellIndex = cIdx;\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 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 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 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 this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\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 frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (cIndex >= frzCols) {\n this.target =\n this.contentRenderer.getMovableRowByIndex(rowIndex).getElementsByClassName(literals.rowCell)[cIndex - frzCols];\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex)\n .getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n }\n else {\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\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 col = gObj.getColumnByIndex(index);\n var selectedCol = void 0;\n var column = gObj.getColumnByIndex(index);\n if (col.getFreezeTableName() === literals.frozenRight) {\n selectedCol = gObj.getFrozenRightColumnHeaderByIndex(index);\n }\n else if (col.getFreezeTableName() === 'movable') {\n selectedCol = gObj.getMovableColumnHeaderByIndex(index);\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(column.uid);\n }\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 movableRows;\n var frRows;\n if (gObj.isFrozenGrid() && gObj.getContent().querySelector('.' + literals.movableContent)) {\n movableRows = isRowTemplate ? gObj.getMovableRows() : gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, movableRows);\n if (gObj.getFrozenMode() === literals.leftRight) {\n frRows = isRowTemplate ? gObj.getFrozenRightRows() : gObj.getFrozenRightDataRows();\n rows = gObj.addMovableRows(rows, frRows);\n }\n }\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 left = this.parent.getFrozenLeftCount();\n var movable = this.parent.getMovableColumnsCount();\n var col = this.parent.getColumnByIndex(startIndex);\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows;\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n if (col.getFreezeTableName() === literals.frozenRight) {\n startIndex = startIndex - (left + movable);\n rows = isRowTemplate ? this.parent.getFrozenRightRows() : this.parent.getFrozenRightDataRows();\n }\n else if (col.getFreezeTableName() === 'movable') {\n startIndex = startIndex - left;\n rows = isRowTemplate ? this.parent.getMovableRows() : this.parent.getMovableDataRows();\n }\n else {\n startIndex = startIndex + this.parent.getIndentCount();\n rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n }\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 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 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.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 * 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 gObj.searchSettings.key = searchString.toString();\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 } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive, isActionPrevent, addRemoveEventListener } from '../base/util';\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 }\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 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 _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 if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (this.parent.autoFit && !this.parent.groupSettings.columns.length) {\n this.parent.preventAdjustColumns();\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.isFrozenGrid() && this.parent.height !== 'auto' && 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 var padding = this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight ? '0.5px' : '1px';\n content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? padding : '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 if (this.parent.isFrozenGrid()) {\n content.firstElementChild.style.height = 'calc(100% - ' + getScrollBarWidth() + 'px)';\n }\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 var frzCols = this.parent.isFrozenGrid();\n var mCont;\n var mHdr;\n if (this.content) {\n mCont = this.content.querySelector('.' + literals.movableContent);\n }\n if (this.header) {\n mHdr = this.header.querySelector('.' + literals.movableHeader);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.frozenRows && ((this.header && !frzCols) || (frzCols && mHdr))) {\n EventHandler.remove(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n if (this.parent.isFrozenGrid()) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (mCont) {\n EventHandler.remove(mCont, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(mCont, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(mCont, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (mHdr) {\n EventHandler.remove(mHdr, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(mHdr, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(mHdr, 'touchmove pointermove', this.onTouchScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onFrozenContentScroll);\n }\n }\n else {\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 }\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 if (this.parent.isFrozenGrid()) {\n this.parent.headerModule.getMovableHeader().scrollLeft = this.previousValues.left;\n }\n else {\n this.parent.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = this.previousValues.left;\n }\n };\n Scroll.prototype.onFrozenContentScroll = function () {\n var _this = this;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, e);\n }\n _this.previousValues.top = e.target.scrollTop;\n };\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 var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling && !_this.parent.isEdit) {\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 (mCont, mHdr) {\n var _this = this;\n var content = mCont;\n var header = mHdr;\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 = isFrozen ?\n _this.parent.getHeaderContent().querySelector('.' + literals.movableHeader) :\n _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = isFrozen ?\n _this.parent.getContent().querySelector('.' + literals.movableContent) :\n _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) {\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 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 mCont = this.content.querySelector('.' + literals.movableContent);\n var mHdr = this.header.querySelector('.' + literals.movableHeader);\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows) {\n EventHandler.add(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll(frzCols ? mCont : this.content), this);\n }\n if (this.parent.isFrozenGrid()) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(mCont, mHdr), this);\n EventHandler.add(mCont, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mHdr), this);\n EventHandler.add(mHdr, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mCont), this);\n EventHandler.add(this.content, 'scroll', this.onFrozenContentScroll(), this);\n EventHandler.add(mHdr, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mHdr, 'touchmove pointermove', this.onTouchScroll(mCont), this);\n EventHandler.add(mCont, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(mCont, 'touchmove pointermove', this.onTouchScroll(mHdr), this);\n }\n }\n else {\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 }\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) {\n _this.setLastRowCell();\n }\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (!args.cancel) {\n if ((_this.parent.frozenRows > 0 || _this.parent.isFrozenGrid()) && _this.header.querySelector('.' + literals.movableHeader)) {\n _this.header.querySelector('.' + literals.movableHeader).scrollLeft = _this.previousValues.left;\n }\n else {\n _this.header.scrollLeft = _this.previousValues.left;\n }\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 }\n if (_this.parent.isFrozenGrid() && _this.header.querySelector('.' + literals.movableHeader)) {\n _this.header.querySelector('.' + literals.movableHeader).scrollLeft =\n _this.content.querySelector('.' + literals.movableContent).scrollLeft;\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 }\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.isFrozenGrid()) {\n var mTable = this.parent.getContent().querySelector('.' + literals.movableContent);\n if (mTable.querySelector('tr:nth-last-child(2)')) {\n removeClass(mTable.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(mTable.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.getFrozenRightColumnsCount()) {\n var frTable = this.parent.getContent().querySelector('.e-frozen-right-content');\n if (frTable.querySelector('tr:nth-last-child(2)')) {\n removeClass(frTable.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(frTable.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n }\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 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.style.width = width + 'px';\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\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 if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (e.keyCode === 86 && (e.ctrlKey || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + literals.rowCell);\n if (!target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow' || !this.clipBoardTextArea) {\n return;\n }\n this.activeElement = document.activeElement;\n this.clipBoardTextArea.value = '';\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, _this.parent.getSelectedRowCellIndexes()[0].rowIndex, _this.parent.getSelectedRowCellIndexes()[0].cellIndexes[0]);\n }, 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 if (!grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n var rows = data.split('\\n');\n var cols;\n var dataRows = grid.getDataRows();\n var mRows;\n var frRows;\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen) {\n mRows = grid.getMovableDataRows();\n if (grid.getFrozenRightColumnsCount()) {\n frRows = grid.getFrozenRightDataRows();\n }\n }\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 (isFrozen) {\n var fTr = dataRows[parseInt(rIdx.toString(), 10)];\n var mTr = mRows[parseInt(rIdx.toString(), 10)];\n isAvail = !fTr.querySelector('[data-colindex=\"' + cIdx + '\"]') ?\n mTr.querySelector('[data-colindex=\"' + cIdx + '\"]') : true;\n if (frRows && !isAvail) {\n var frTr = frRows[parseInt(rIdx.toString(), 10)];\n isAvail = frTr.querySelector('[data-colindex=\"' + cIdx + '\"]');\n }\n }\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 };\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 var isFrozen = this.parent.isFrozenGrid();\n this.clipBoardTextArea.value = this.copyContent = '';\n var mRows = void 0;\n var frRows = void 0;\n var rows = this.parent.getDataRows();\n if (isFrozen) {\n mRows = this.parent.getMovableDataRows();\n if (this.parent.getFrozenMode() === literals.leftRight || this.parent.getFrozenMode() === 'Right') {\n frRows = this.parent.getFrozenRightRows();\n }\n }\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 rightCols = [];\n var movableCols = [];\n if (isFrozen) {\n movableCols.push.apply(movableCols, [].slice.call(mRows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n rightCols.push.apply(rightCols, [].slice.call(frRows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n if (this.parent.getFrozenMode() === 'Left' || this.parent.getFrozenMode() === literals.leftRight ||\n (this.parent.isFrozenGrid() && !this.parent.getFrozenMode())) {\n leftCols.push.apply(leftCols, [].slice.call(rows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n }\n else {\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 }\n var cells = leftCols.concat(movableCols).concat(rightCols);\n this.getCopyData(cells, 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 headers.push(this.parent.getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]));\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 getElementsByClassName('e-cellselectionbackground'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[obj.rowIndexes[parseInt(i.toString(), 10)]]\n .getElementsByClassName('e-cellselectionbackground')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[obj.rowIndexes[parseInt(i.toString(), 10)]]\n .getElementsByClassName('e-cellselectionbackground')));\n }\n }\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 }\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","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 } 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 } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, renderMovable, getNumberFormat, getTransformValues } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\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 { 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, \"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 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 = _super.call(this, options, element) || this;\n _this.isPreventScrollEvent = false;\n _this.inViewIndexes = [];\n _this.keyA = false;\n _this.frozenRightCount = 0;\n _this.frozenLeftCount = 0;\n _this.tablesCount = 1;\n _this.movableCount = 0;\n _this.visibleFrozenLeft = 0;\n _this.visibleFrozenRight = 0;\n _this.visibleMovable = 0;\n _this.frozenLeftColumns = [];\n _this.frozenRightColumns = [];\n _this.movableColumns = [];\n _this.media = {};\n _this.isFreezeRefresh = false;\n /** @hidden */\n _this.tableIndex = 0;\n _this.componentRefresh = Component.prototype.refresh;\n /** @hidden */\n _this.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.requireTemplateRef = true;\n /** @hidden */\n _this.vRows = [];\n /** @hidden */\n _this.vcRows = [];\n /** @hidden */\n _this.vGroupOffsets = {};\n /** @hidden */\n _this.rowUid = 0;\n /** @hidden */\n _this.isManualRefresh = false;\n /** @hidden */\n _this.isAutoFitColumns = false;\n /** @hidden */\n _this.enableDeepCompare = false;\n /** @hidden */\n _this.totalDataRecordsCount = 0;\n /** @hidden */\n _this.disableSelectedRecords = [];\n /** @hidden */\n _this.partialSelectedRecords = [];\n /** @hidden */\n _this.islazyloadRequest = false;\n /** @hidden */\n _this.lockcolPositionCount = 0;\n /** @hidden */\n _this.prevPageMoving = false;\n /** @hidden */\n _this.pageTemplateChange = false;\n /** @hidden */\n _this.isAutoGen = false;\n _this.mediaBindInstance = {};\n /** @hidden */\n _this.commandDelIndex = undefined;\n /** @hidden */\n _this.asyncTimeOut = 50;\n /** @hidden */\n _this.isExportGrid = false;\n // enable/disable logger for MVC & Core\n _this.enableLogger = true;\n _this.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this.mergePersistGridData, _this);\n return _this;\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\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 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 });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\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 });\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 });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\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.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 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 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 FilterMenuDialogARIA: 'Filter menu dialog',\n ExcelFilterDialogARIA: 'Excel filter dialog',\n DialogEditARIA: 'Edit dialog',\n ColumnChooserDialogARIA: 'Column chooser',\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, { datarole: '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.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) {\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.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\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 /**\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 && axisDirection ? true : false;\n if (!this.contentMaskTable && !(this.isFrozenGrid() && this.enableColumnVirtualization && axisDirection === 'X')) {\n var content = gridContent;\n if (this.isFrozenGrid()) {\n if (!this.isInitialLoad && !this.enableVirtualization && this.frozenRows && this.height !== 'auto') {\n var contentHeight = content.getBoundingClientRect().height - (this.frozenRows * this.getRowHeight());\n content.style.height = contentHeight + 'px';\n }\n content = content.querySelector('.e-frozen-left-content, .e-frozen-right-content');\n }\n else if (this.enableVirtualization) {\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 && !((this.isFrozenGrid() && ((this.enableVirtualization && axisDirection === 'Y')\n || (this.enableColumnVirtualization && axisDirection === 'X')\n || (this.enableInfiniteScrolling && axisDirection === 'down'))))) {\n var content = gridHeader;\n if (this.isFrozenGrid()) {\n content = content.querySelector('.e-frozen-left-header, .e-frozen-right-header');\n }\n else if (this.enableColumnVirtualization && axisDirection === 'X') {\n content = content.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n if (!this.movableHeaderMaskTable && this.isFrozenGrid() && !((this.enableVirtualization && axisDirection === 'Y')\n || (this.enableInfiniteScrolling && axisDirection === 'down'))) {\n var content = gridHeader.querySelector('.e-movableheader');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.movableHeaderMaskTable = this.createMaskTable(content, this.getMovableContentMaskColumns(), axisDirection);\n }\n if (!this.rightHeaderMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right'\n && !((this.enableVirtualization && axisDirection === 'Y') || (this.enableInfiniteScrolling && axisDirection === 'down'))) {\n this.rightHeaderMaskTable = this.createMaskTable(gridHeader\n .querySelector('.e-frozen-right-header'), this.getRightContentMaskColumns(), axisDirection);\n }\n if (!this.movableContentMaskTable && this.isFrozenGrid()) {\n var content = gridContent.querySelector('.e-movablecontent');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.movableContentMaskTable = this.createMaskTable(content, this.getMovableContentMaskColumns(), axisDirection);\n }\n }\n if (!this.rightContentMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.rightContentMaskTable = this.createMaskTable(gridContent\n .querySelector('.e-frozen-right-content'), this.getRightContentMaskColumns(), axisDirection);\n }\n if (gridFooter && gridFooter.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n if (this.isFrozenGrid()) {\n footerContent = footerContent.querySelector('.e-frozen-left-footercontent, .e-frozen-right-footercontent');\n }\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n if (this.isFrozenGrid()) {\n if (!this.movableFooterContentMaskTable) {\n this.movableFooterContentMaskTable = this.createMaskTable(gridFooterContent\n .querySelector('.e-movablefootercontent'));\n }\n if (this.getFrozenMode() === 'Left-Right' && !this.rightFooterContentMaskTable) {\n this.rightFooterContentMaskTable = this.createMaskTable(gridFooterContent\n .querySelector('.e-frozen-right-footercontent'));\n }\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n var columns = this.getColumns();\n if (this.isFrozenGrid()) {\n if (this.getFrozenMode() === 'Left' || this.getFrozenMode() === 'Left-Right') {\n columns = this.frozenColumns ? columns.slice(0, this.frozenColumns) : this.getFrozenLeftColumns();\n }\n else if (this.getFrozenMode() === 'Right') {\n columns = this.getFrozenRightColumns();\n }\n }\n return columns;\n };\n Grid.prototype.getMovableContentMaskColumns = function () {\n var gridColumns = this.getColumns();\n var columns = this.frozenColumns ? gridColumns.slice(this.frozenColumns, gridColumns.length)\n : this.getMovableColumns();\n return columns;\n };\n Grid.prototype.getRightContentMaskColumns = function () {\n return this.getFrozenRightColumns();\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 if (this.isFrozenGrid()) {\n if (content) {\n parentElement.style.overflow = 'hidden';\n }\n parentElement.style.position = 'relative';\n }\n var maskTable = table.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.removeAttribute('aria-multiselectable');\n maskTable.removeAttribute('aria-colcount');\n maskTable.removeAttribute('aria-rowcount');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '1';\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 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 && this.isFrozenGrid())) {\n var rowCountElement = gridContent;\n var rowCount = header && this.isFrozenGrid() ? this.frozenRows\n : 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 = content && this.isFrozenGrid() && this.frozenRows ? this.frozenRows + 1 : 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr: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 (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (header && this.isFrozenGrid()) || (this.enableVirtualization && 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 parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (header && this.isFrozenGrid() && tbody\n .getBoundingClientRect().height < maskTable.querySelector('tbody').getBoundingClientRect().height) {\n var maskTableHolderHeight = maskTable.querySelector('tbody')\n .getBoundingClientRect().height - tbody.getBoundingClientRect().height;\n var maskTableHolder = this.createElement('div', { className: 'e-masked-table-holder', attrs: {\n style: 'height: ' + maskTableHolderHeight + 'px;'\n } });\n parentElement.appendChild(maskTableHolder);\n }\n else if (header && this.isFrozenGrid() && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.height = parentElement\n .getBoundingClientRect().height - table.querySelector('thead').getBoundingClientRect().height + 'px';\n }\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 maskCell.removeAttribute('data-colindex');\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 var maskTables = [this.headerMaskTable, this.movableHeaderMaskTable, this.rightHeaderMaskTable,\n this.contentMaskTable, this.movableContentMaskTable, this.rightContentMaskTable, this.footerContentMaskTable,\n this.movableFooterContentMaskTable, this.rightFooterContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n if (this.isFrozenGrid() && !closest(maskTable, '.e-gridfooter')) {\n var parent_1 = maskTable.parentElement;\n parent_1.style.overflow = '';\n parent_1.style.position = '';\n if (closest(maskTable, '.e-frozen-left-header') || closest(maskTable, '.e-movableheader')\n || closest(maskTable, '.e-frozen-right-header')) {\n var maskTableHolder = parent_1.querySelector('.e-masked-table-holder');\n if (maskTableHolder) {\n remove(maskTableHolder);\n }\n }\n }\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.movableHeaderMaskTable = null;\n this.rightHeaderMaskTable = null;\n this.contentMaskTable = null;\n this.movableContentMaskTable = null;\n this.rightContentMaskTable = null;\n this.footerContentMaskTable = null;\n this.movableFooterContentMaskTable = null;\n this.rightFooterContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridHeader = this.getHeaderContent().firstChild;\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.isFrozenGrid()) {\n content = content.querySelector('.e-frozen-left-content, .e-frozen-right-content');\n }\n else if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.headerMaskTable && this.isFrozenGrid()) {\n this.refreshMaskRowColgroupWidth(gridHeader.querySelector('.e-frozen-left-header, .e-frozen-right-header'));\n }\n if (this.movableHeaderMaskTable && this.isFrozenGrid()) {\n var content = gridHeader.querySelector('.e-movableheader');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.rightHeaderMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.refreshMaskRowColgroupWidth(gridHeader.querySelector('.e-frozen-right-header'));\n }\n if (this.movableContentMaskTable && this.isFrozenGrid()) {\n var content = gridContent.querySelector('.e-movablecontent');\n if (this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n if (this.rightContentMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.refreshMaskRowColgroupWidth(gridContent.querySelector('.e-frozen-right-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 };\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 > this.height && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (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 };\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 || this.isVue) {\n this.destroyTemplate(['template']);\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 this.isFreezeRefresh = false;\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 }\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 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 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\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\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') {\n this.refreshHeader();\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 '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 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 break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\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 break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = 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.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) {\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 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 (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 for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\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 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 = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this.selectRow(index);\n _this.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 {void}\n */\n Grid.prototype.setTablesCount = function () {\n var frozenCols = this.getFrozenColumns();\n var frozenLeft = this.getFrozenLeftColumnsCount();\n var frozenRight = this.getFrozenRightColumnsCount();\n if (frozenCols && !frozenLeft && !frozenRight) {\n this.tablesCount = 2;\n }\n else if (!frozenCols && (frozenLeft || frozenRight)) {\n if ((frozenLeft && !frozenRight) || (frozenRight && !frozenLeft)) {\n this.tablesCount = 2;\n }\n else if (frozenLeft && frozenRight) {\n this.tablesCount = 3;\n }\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 if (this.enableColumnVirtualization && this.getFrozenColumns()) {\n var cells = this.contentModule.getHeaderCells();\n headerCells = cells.length ? cells : headerCells;\n }\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 = columns.length; 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.updateColumnLevelFrozen();\n this.updateFrozenColumns();\n this.updateLockableColumns();\n }\n };\n Grid.prototype.updateColumnLevelFrozen = function () {\n var cols = this.columnModel;\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[parseInt(i.toString(), 10)];\n if (col.freeze === 'Left') {\n col.freezeTable = literals.frozenLeft;\n leftCols.push(col);\n }\n else if (col.freeze === 'Right') {\n col.freezeTable = literals.frozenRight;\n rightCols.push(col);\n }\n else {\n col.freezeTable = 'movable';\n movableCols.push(col);\n }\n }\n this.columnModel = leftCols.concat(movableCols).concat(rightCols);\n }\n };\n Grid.prototype.updateFrozenColumns = function () {\n if (this.frozenLeftCount || this.frozenRightCount) {\n return;\n }\n var cols = this.columnModel;\n var directFrozenCount = this.frozenColumns;\n var totalFrozenCount = this.getFrozenColumns();\n var count = 0;\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[parseInt(i.toString(), 10)];\n if (directFrozenCount) {\n if (i < directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n }\n else {\n col.freezeTable = 'movable';\n }\n }\n if (col.isFrozen && i >= directFrozenCount) {\n col.freezeTable = literals.frozenLeft;\n cols.splice(this.frozenColumns + count, 0, cols.splice(i, 1)[0]);\n count++;\n }\n else if (totalFrozenCount && !directFrozenCount) {\n col.freezeTable = 'movable';\n }\n if (!totalFrozenCount && !directFrozenCount && !isNullOrUndefined(col.freezeTable)) {\n col.freezeTable = undefined;\n }\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.getFrozenLeftColumnsCount() !== 0 || this.getFrozenRightColumnsCount() !== 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 * 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 = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this.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 if (this.contentModule && this.enableColumnVirtualization && this.isFrozenGrid() && inview.length\n && inview[0] > 0) {\n var frozenCols = this.contentModule.ensureFrozenCols(columns);\n columns = frozenCols;\n }\n return columns;\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 Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getMovableRowByIndex(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 Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.getFrozenDataRows()[parseInt(index.toString(), 10)];\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 Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getFrozenRightRowByIndex(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 = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row) && !row.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row.getAttribute('data-uid'));\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n args = { row: row, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex)) {\n var row_1 = closest(cell, '.' + literals.row);\n var rowIndex = parseInt(row_1.getAttribute(literals.dataRowIndex), 10);\n var frzCols = this.getFrozenColumns();\n var tableName = this.columnModel[parseInt(cellIndex.toString(), 10)].getFreezeTableName();\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n if (this.isFrozenGrid()) {\n if (tableName === literals.frozenLeft) {\n rows = this.contentModule.getRows();\n }\n else if (tableName === 'movable') {\n index = cellIndex - frzCols - this.frozenLeftCount;\n rows = this.contentModule.getMovableRows();\n }\n else if (tableName === literals.frozenRight) {\n index = cellIndex - (this.frozenLeftCount + this.movableCount);\n rows = this.contentModule.getFrozenRightRows();\n }\n }\n var rowsObject = rows.filter(function (r) { return r.uid === row_1.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_1, 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 Grid.prototype.getMovableRows = function () {\n return this.contentModule.getMovableRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getFrozenRightRowElements();\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.isFrozenGrid() ? this.getFrozenLeftContentTbody()\n : this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.isFrozenGrid() ? this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody)\n : this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\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 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 * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n if (!this.isFrozenGrid()) {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\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 * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n var rows = [].slice.call(this.getContent().querySelector('.' + literals.frozenContent).querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + literals.frozenHeader).querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\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 * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n if (this.getFrozenMode() !== 'Right' && this.getFrozenMode() !== 'Left-Right') {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(literals.tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\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 isRight = this.getFrozenMode() === 'Right';\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 = col.getFreezeTableName() === 'movable' ? this.contentModule.getMovableRows() :\n col.getFreezeTableName() === 'frozen-right' ? this.getFrozenRightRowsObject() : 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 left = this.getFrozenLeftColumnsCount() || this.getFrozenColumns();\n var movable = this.getMovableColumnsCount();\n if (this.isRowDragable() && !isRight) {\n left++;\n }\n var frIdx = left + movable;\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = col.getFreezeTableName() === 'movable' ? left : col.getFreezeTableName() === 'frozen-right' ? frIdx : 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() && !isRight) {\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 = 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.childGrid && _this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this.getContentTable().querySelectorAll('.e-row') :\n _this.getDataRows();\n _this.refreshReactTemplateTD(rows, isChildGrid);\n var mCont = _this.getContent().querySelector('.' + literals.movableContent);\n var frCont = _this.getContent().querySelector('.e-frozen-right-content');\n if (mCont && mCont.querySelectorAll('.e-templatecell').length) {\n _this.refreshReactTemplateTD(_this.getMovableDataRows(), isChildGrid, true);\n }\n if (frCont && frCont.querySelectorAll('.e-templatecell').length) {\n _this.refreshReactTemplateTD(_this.getFrozenRightDataRows(), isChildGrid, true);\n }\n if (renderTemplates) {\n _this.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 for (var j = 0; j < rowsObj.length; 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, this.serviceLocator);\n var td = parentsUntil(this.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n }\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.isFrozenGrid()) {\n var currentTbl = parentsUntil(selectRowEle[0], 'e-table');\n var currentTblName = currentTbl.parentElement.matches('.e-frozen-left-header,.e-frozen-left-content') ? 'left'\n : currentTbl.parentElement.matches('.e-frozen-right-header,.e-frozen-right-content') ? 'right' : 'movable';\n var mTr = this.getMovableRowsObject()[selectedRow.index];\n this.setFrozenRowData(mTr, rowData);\n if (currentTblName === 'left') {\n var lTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(lTr, rowData);\n }\n if (currentTblName === 'right' || this.frozenRightColumns.length > 0) {\n var rTr = this.getFrozenRightRowsObject()[selectedRow.index];\n this.setFrozenRowData(rTr, rowData);\n }\n }\n else 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 Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n if (this.frozenName === 'Left-Right' && columnIndex >= this.movableCount) {\n return undefined;\n }\n var index = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableDataRows()[parseInt(rowIndex.toString(), 10)] &&\n this.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell)[columnIndex - index];\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 Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n var index = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n var rows = this.getFrozenRightDataRows();\n return rows[parseInt(rowIndex.toString(), 10)] && rows[parseInt(rowIndex.toString(), 10)]\n .getElementsByClassName(literals.rowCell)[columnIndex - index];\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 Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n var left = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableVirtualHeader().getElementsByClassName('e-headercell')[index - left];\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 Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n var left = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n return this.getFrozenRightHeader().getElementsByClassName('e-headercell')[index - left];\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 Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getFrozenVirtualHeader().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * @param {string} uid - Defines the uid\n * @param {boolean} isMovable - Defines isMovable\n * @param {boolean} isFrozenRight - Defines isFrozenRight\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid, isMovable, isFrozenRight) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (this.isFrozenGrid()) {\n if (!row || isMovable || isFrozenRight) {\n row = this.rowObject(this.contentModule.getMovableRows(), uid);\n if ((!row && this.getFrozenMode() === 'Left-Right') || isFrozenRight) {\n row = this.rowObject(this.contentModule.getFrozenRightRows(), uid);\n }\n return row;\n }\n }\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 Grid.prototype.getMovableRowsObject = function () {\n var rows = [];\n if (this.isFrozenGrid()) {\n rows = this.contentModule.getMovableRows();\n }\n return rows;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n var rows = [];\n if (this.getFrozenMode() === 'Right' || this.getFrozenMode() === 'Left-Right') {\n rows = this.contentModule.getFrozenRightRows();\n }\n return rows;\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 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 = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this.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;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount;\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.splitFrozenCount(this.columns);\n if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n this.setProperties({ frozenColumns: 0 }, true);\n }\n this.setTablesCount();\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.splitFrozenCount = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitFrozenCount(columns[parseInt(i.toString(), 10)].columns);\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') {\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 {\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 };\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.frozenRightCount) {\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.frozenRightCount) {\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 = cols.length; 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) {\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.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 };\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 = 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.frozenRightCount : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this)) {\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.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 (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 this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\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 *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n * ```typescript\n *
    \n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if (this.isFrozenGrid() || (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 addClass([headerTable, contentTable], ['e-tableborder']);\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.isFrozenGrid() || (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_1 = 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_1.allowSorting) {\n this_1.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_1.groupSettings.showGroupedColumn) {\n var column = this_1.enableColumnVirtualization ?\n this_1.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_1.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_1.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_1(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.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 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 this.isFreezeRefresh = true;\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 = '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) {\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 (element.getAttribute('data-tooltip-id')) {\n return;\n }\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 this.hoverFrozenRows(e);\n };\n /**\n * @param {MouseEvent} e - Defines the mouse event\n * @returns {void}\n * @hidden\n */\n Grid.prototype.hoverFrozenRows = function (e) {\n if (this.isFrozenGrid()) {\n var row = parentsUntil(e.target, literals.row);\n if ([].slice.call(this.element.getElementsByClassName('e-frozenhover')).length && e.type === 'mouseout') {\n var rows = [].slice.call(this.element.getElementsByClassName('e-frozenhover'));\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].classList.remove('e-frozenhover');\n }\n }\n else if (row) {\n var rows = [].slice.call(this.element.querySelectorAll('tr[data-rowindex=\"' + row.getAttribute(literals.dataRowIndex) + '\"]'));\n rows.splice(rows.indexOf(row), 1);\n for (var i = 0; i < rows.length; i++) {\n if (row.getAttribute('aria-selected') !== 'true' && rows[parseInt(i.toString(), 10)]) {\n rows[parseInt(i.toString(), 10)].classList.add('e-frozenhover');\n }\n else if (rows[parseInt(i.toString(), 10)]) {\n rows[parseInt(i.toString(), 10)].classList.remove('e-frozenhover');\n }\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', { attrs: { role: 'grid' } });\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');\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, 'mousemove', 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, 'mousemove', 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.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.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')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && 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 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-input-group')) && (parentsUntil(relatedTarget, 'e-uploader') || !isNullOrUndefined(parentsUntil(relatedTarget, 'e-input-group')))) {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\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 setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\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 _loop_2 = function (i) {\n var localCol = columns.filter(function (tCol) { return tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (localCol.columns && localCol.columns.length) {\n this_2.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_2 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_2(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 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.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 && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && 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 /**\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.setFrozenCount();\n var fCnt = this.getContent().querySelector('.e-frozen-left-content');\n var frCnt = this.getContent().querySelector('.e-frozen-right-content');\n var isColFrozen = !this.frozenRightCount && !this.frozenLeftCount;\n var isFrozen = this.getFrozenColumns() !== 0;\n if (!isFrozen && ((!fCnt && this.frozenLeftCount) || (!frCnt && this.frozenRightCount) || (fCnt && !this.frozenLeftCount)\n || (frCnt && !this.frozenRightCount))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else if (isColFrozen && ((this.getFrozenColumns() === 1 && !fCnt) || (this.getFrozenColumns() === 0 && fCnt))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else {\n this.isPreventScrollEvent = true;\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid()) {\n var mTbl = this.contentModule.getMovableContent().querySelector('.' + literals.table);\n remove(mTbl.querySelector(literals.colGroup));\n var colGroup = ((this.getHeaderContent()\n .querySelector('.' + literals.movableHeader).querySelector(literals.colGroup)).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector(literals.tbody));\n if (this.getFrozenMode() === 'Left-Right') {\n var frTbl = this.contentModule.getFrozenRightContent().querySelector('.' + literals.table);\n remove(frTbl.querySelector(literals.colGroup));\n var colGrp = ((this.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(literals.colGroup)).cloneNode(true));\n frTbl.insertBefore(colGrp, frTbl.querySelector(literals.tbody));\n }\n }\n }\n if (this.isFrozenGrid()) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.headerModule.getMovableHeader().scrollLeft = left;\n this.contentModule.getMovableContent().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 return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\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 return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : 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 = this;\n var refresh = function () {\n _this.scrollModule.refresh();\n _this.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 // 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 var scrollBar = this.getContent().querySelector('.e-scrollbar');\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n if (this.isFrozenGrid() && scrollBar) {\n var mvblScrollBar = this.getContent().querySelector('.e-movablescrollbar');\n var mvblChild = this.getContent().querySelector('.e-movablechild');\n scrollBar.style.display = 'flex';\n if (mvblScrollBar.offsetWidth >= mvblChild.offsetWidth) {\n scrollBar.style.display = 'none';\n this.notify(events.frozenHeight, 0);\n }\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 * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field) {\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 (field === gCols[parseInt(i.toString(), 10)].field || (gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\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) {\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 * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.movableContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualContent = function () {\n return this.getContent().querySelector('.' + literals.frozenContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.movableHeader);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + literals.frozenHeader);\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 if (this.isFrozenGrid()) {\n var fRows = [].slice.call(this.getFrozenVirtualContent().querySelector(literals.tbody).children);\n var mRows = [].slice.call(this.getMovableVirtualContent().querySelector(literals.tbody).children);\n var frozenRigtRows = [];\n if (this.tablesCount === 3) {\n frozenRigtRows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(literals.tbody).children);\n }\n if (this.frozenRows) {\n rows = [].slice.call(this.getFrozenVirtualHeader().querySelector(literals.tbody).children);\n rows = rows.concat([].slice.call(this.getMovableVirtualHeader().querySelector(literals.tbody).children));\n if (this.tablesCount === 3) {\n var frHdr = this.getHeaderContent().querySelector('.e-frozen-right-header');\n rows = rows.concat([].slice.call(frHdr.querySelector(literals.tbody).children)).concat(frozenRigtRows);\n }\n rows = rows.concat(fRows).concat(mRows);\n }\n else {\n rows = fRows.concat(mRows).concat(frozenRigtRows);\n }\n }\n else {\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 }\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, this.currencyCode);\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 = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this.processRowChanges(_this.dataToBeUpdated);\n _this.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 = 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.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this = 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.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n var index = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n remove(tr);\n if (this.getFrozenColumns()) {\n var mtr = this.getMovableRows()[parseInt(index.toString(), 10)];\n remove(mtr);\n }\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_3 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_3.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_3(i);\n i = out_i_1;\n }\n var _loop_4 = 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.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_4.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_4 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_4(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 var mTr;\n var mTbody;\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.getFrozenColumns()) {\n var moveTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n }\n }\n if (this.getFrozenColumns()) {\n mTr = renderMovable(tr, this.getFrozenColumns(), this);\n if (this.frozenRows && index < this.frozenRows) {\n mTbody = this.getHeaderContent().querySelector('.' + literals.movableHeader).querySelector(literals.tbody);\n }\n else {\n mTbody = this.getContent().querySelector('.' + literals.movableContent).querySelector(literals.tbody);\n }\n mTbody.appendChild(mTr);\n if (this.height === 'auto') {\n this.notify(events.frozenHeight, {});\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 var frzCols = this.getFrozenColumns();\n if (frzCols) {\n var mRows = this.getMovableRowsObject();\n var mRow = row.clone();\n mRow.cells = mRow.cells.slice(frzCols);\n row.cells = row.cells.slice(0, frzCols);\n mRows.splice(index, 1, mRow);\n }\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).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 Grid.prototype.getFrozenRightContent = function () {\n return this.getContent().querySelector('.e-frozen-right-content');\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozen-right-header');\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getMovableVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getMovableVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getFrozenVirtualHeader().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getFrozenVirtualContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getFrozenRightHeader().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n var cnt = this.getFrozenRightContent();\n var tbody;\n if (cnt) {\n tbody = this.getFrozenRightContent().querySelector(literals.tbody);\n }\n return 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 * 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, \"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, \"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('22.2.12')\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, \"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","/**\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/**\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","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined, closest } 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 = columnModel.length; 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 = columns.length; 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/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== 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('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) && inst.editSettings.showConfirmDialog &&\n (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 < columns.length; 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 {Element} ele - Defines the element\n * @param {number} frzCols - Defines the frozen columns\n * @param {IGrid} gObj - Defines the IGrid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function renderMovable(ele, frzCols, gObj) {\n frzCols = frzCols && gObj && gObj.isRowDragable() ? frzCols + 1 : frzCols;\n var mEle = ele.cloneNode(true);\n for (var i = 0; i < frzCols; i++) {\n mEle.removeChild(mEle.children[0]);\n }\n for (var i = frzCols, len = ele.childElementCount; i < len; i++) {\n ele.removeChild(ele.children[ele.childElementCount - 1]);\n }\n return mEle;\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 obj[parseInt(index.toString(), 10)] = {};\n obj[parseInt(index.toString(), 10)].isExpand = true;\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 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 var isFrozen = gObj.isFrozenGrid() && !gObj.getFrozenColumns();\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(isFrozen ? gObj.getColumns() : gObj[\"\" + key]);\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 && 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 */\nfunction 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 < column.length; 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 {HTMLElement} mTD - Defines the movable TD\n * @param {HTMLElement} fTD - Defines the Frozen TD\n * @returns {void}\n * @hidden\n */\nexport function alignFrozenEditForm(mTD, fTD) {\n if (mTD && fTD) {\n var mHeight = closest(mTD, '.' + literals.row).getBoundingClientRect().height;\n var fHeight = closest(fTD, '.' + literals.row).getBoundingClientRect().height;\n if (mHeight > fHeight) {\n fTD.style.height = mHeight + 'px';\n }\n else {\n mTD.style.height = fHeight + 'px';\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 cntOffset = gridObj.getContent().firstElementChild.offsetHeight;\n return row && row.getBoundingClientRect().top > cntOffset;\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 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 if (gObj.isFrozenGrid()) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-movableheader .e-row, .e-movablecontent .e-row'));\n var cls = gObj.getFrozenMode() === literals.leftRight ? '.e-frozen-left-header .e-row, .e-frozen-left-content .e-row'\n : '.e-frozenheader .e-row, .e-frozencontent .e-row';\n (gObj).contentModule.freezeRowElements =\n [].slice.call(gObj.element.querySelectorAll(cls));\n if (gObj.getFrozenMode() === literals.leftRight) {\n gObj.contentModule.frozenRightRowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-frozen-right-header .e-row, .e-frozen-right-content .e-row'));\n }\n }\n else {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Cell} cells - Defines the callback function\n * @param {freezeTable} tableName - Defines the row\n * @returns {Cell[]} Returns the cell\n * @hidden\n */\nexport function splitFrozenRowObjectCells(gObj, cells, tableName) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n var right = gObj.getFrozenRightColumnsCount();\n var frozenMode = gObj.getFrozenMode();\n var drag = gObj.isRowDragable() ? 1 : 0;\n var rightIndex = frozenMode === 'Right' ? left + movable : left + movable + drag;\n var mvblIndex = frozenMode === 'Right' ? left : left + drag;\n var mvblEndIdx = frozenMode === 'Right' ? cells.length - right - drag\n : right ? cells.length - right : cells.length;\n if (tableName === literals.frozenLeft) {\n cells = cells.slice(0, left ? left + drag : cells.length);\n }\n else if (tableName === literals.frozenRight) {\n cells = cells.slice(rightIndex, cells.length);\n }\n else if (tableName === 'movable') {\n cells = cells.slice(mvblIndex, mvblEndIdx);\n }\n return cells;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object.\n * @param {boolean} visibleOnly - Defines to return only visible columns.\n * @returns {{frozenLeft: Column[], movable: Column[], frozenRight: Column[]}} - Returns all frozenLeft, movable and frozenRight Columns as object.\n * @hidden\n */\nexport function getExactFrozenMovableColumn(gObj, visibleOnly) {\n var columnModel = gObj.getColumns();\n var movableColumns = [];\n var frozenLeftColumns = [];\n var frozenRightColumns = [];\n for (var i = 0; i < columnModel.length; i++) {\n if (isNullOrUndefined(visibleOnly) || !visibleOnly || visibleOnly === columnModel[parseInt(i.toString(), 10)].visible) {\n if (columnModel[parseInt(i.toString(), 10)].freeze === 'Left' || columnModel[parseInt(i.toString(), 10)].freezeTable === 'frozen-left') {\n frozenLeftColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n else if (columnModel[parseInt(i.toString(), 10)].freeze === 'Right' || columnModel[parseInt(i.toString(), 10)].freezeTable === 'frozen-right') {\n frozenRightColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n else {\n movableColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n }\n }\n return { frozenLeft: frozenLeftColumns, movable: movableColumns, frozenRight: frozenRightColumns };\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function gridActionHandler(gObj, callBack, rows, force, rowObj) {\n if (rows[0].length || force) {\n if (rowObj) {\n callBack(literals.frozenLeft, rows[0], rowObj[0]);\n }\n else {\n callBack(literals.frozenLeft, rows[0]);\n }\n }\n if (gObj.isFrozenGrid() && (rows[1].length || force)) {\n if (rowObj) {\n callBack('movable', rows[1], rowObj[1]);\n }\n else {\n callBack('movable', rows[1]);\n }\n }\n if ((gObj.getFrozenMode() === literals.leftRight || gObj.getFrozenMode() === 'Right') && (rows[2].length || force)) {\n if (rowObj) {\n callBack(literals.frozenRight, rows[2], rowObj[2]);\n }\n else {\n callBack(literals.frozenRight, rows[2]);\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Row} Returns the row\n * @hidden\n */\nexport function getGridRowObjects(gObj) {\n return [gObj.getFrozenMode() !== 'Right' ? gObj.getRowsObject() : [], gObj.getMovableRowsObject(), gObj.getFrozenRightRowsObject()];\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getGridRowElements(gObj) {\n return [\n gObj.getFrozenMode() !== 'Right' ? gObj.getAllDataRows(true) : [],\n gObj.getAllMovableDataRows(true), gObj.getAllFrozenRightDataRows(true)\n ];\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 {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 if (col.getFreezeTableName() === 'movable') {\n return [].slice.call(gObj.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n return [].slice.call(gObj.getFrozenRightDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\n else {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n }\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 var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n index = col.getFreezeTableName() === 'movable' ? index - left : col.getFreezeTableName() === literals.frozenRight\n ? index - (left + movable) : 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 {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getMovableTbody(gObj) {\n var tbody;\n if (gObj.isFrozenGrid()) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getMovableHeaderTbody()\n : gObj.getMovableContentTbody();\n }\n return tbody;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getFrozenRightTbody(gObj) {\n var tbody;\n if (gObj.getFrozenMode() === literals.leftRight) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getFrozenRightHeaderTbody()\n : gObj.getFrozenRightContentTbody();\n }\n return tbody;\n}\n/**\n * @param {Element} tbody - Table body\n * @param {Element} mTbody - Movanle table body\n * @param {Element} frTbody - Frozen right table body\n * @param {Element[]} tr - Table rows\n * @param {Element[]} mTr - Movable table rows\n * @param {Element[]} frTr - Frozen right table rows\n * @param {Function} callBack - Callback function\n * @returns {void}\n * @hidden\n */\nexport function setRowsInTbody(tbody, mTbody, frTbody, tr, mTr, frTr, callBack) {\n if (tbody && tr) {\n callBack(tbody, tr);\n }\n if (mTbody && mTr) {\n callBack(mTbody, mTr);\n }\n if (frTbody && frTr) {\n callBack(frTbody, frTr);\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 ? td : tr[parseInt(i.toString(), 10)].querySelector(\"td[data-colindex=\\\"\" + idx + \"\\\"]\");\n if (isNullOrUndefined(td)) {\n continue;\n }\n else {\n idx = 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()) {\n var index = parent.getFrozenColumns() ? idx : idx + 1;\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(index.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n else {\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 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 { 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","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked, clearReactVueTemplates, padZero } 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.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 }\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 }\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.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\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(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 CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n document.body.querySelector('.e-chkcancel-icon').setAttribute('title', this.localeObj.getConstant('Clear'));\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n document.body.querySelector('.e-search-icon').setAttribute('title', this.localeObj.getConstant('Search'));\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 };\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 this.dlg.setAttribute('aria-label', this.getLocalizedLabel('ExcelFilterDialogARIA'));\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 (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n else {\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.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.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\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.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\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 value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if (checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== '')) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[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 var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: fObj.field, arg2: fObj.predicate, arg3: fObj.operator,\n arg4: fObj.matchCase, arg5: fObj.ignoreAccent, arg6: fObj.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\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: 'and', value: null\n });\n }\n }\n if (this.cBox.querySelector('.e-add-current') && this.cBox.querySelector('.e-add-current').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 this.initiateFilter(coll);\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 // 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.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 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 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 query.where(pred.e);\n }\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\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 foreignQuery.take(filterargs.filterChoiceCount);\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n query.take(filterargs.filterChoiceCount);\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 query.requiresCount(); //consider take query\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 this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n query.take(args.filterChoiceCount);\n if (!args.query.distincts.length) {\n _this.customQuery = true;\n _this.queryGenerate(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 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 query.distinct(filteredColumn);\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.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 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 for (var j = 0; j < e.length; j++) {\n runArray[i++](e[parseInt(j.toString(), 10)].result);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\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) {\n this.sInput.focus();\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 sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\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 };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = 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 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 }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\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) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n var cBoxes = [].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 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'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.cBox.querySelector('.e-selectall');\n var selected = 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 (cnt === selected) {\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 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;\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 this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\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 var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n cBoxes.appendChild(selectAll);\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 var predicateElement = createCboxWithWrap(getUid('cbox'), predicateCheckBox, 'e-ftrchk');\n predicateElement.querySelector('.e-frame').classList.add('e-add-current');\n cBoxes.appendChild(predicateElement);\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 var checkbox = this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[\"\" + uid]), getValue('dataObj', data[parseInt(i.toString(), 10)]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n }\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n this.updateIndeterminatenBtn();\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\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 }\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 hideSpinner(this.spinner);\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 return this.options.operator === 'notequal' ? !checkState : checkState;\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 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[parseInt(p.toString(), 10)].predicate === 'or') {\n if (cols[parseInt(p.toString(), 10)].type === 'date' || cols[parseInt(p.toString(), 10)].type === 'datetime' || cols[parseInt(p.toString(), 10)].type === 'dateonly') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal));\n }\n else {\n predicate.predicates.push(new 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 else {\n if (cols[parseInt(p.toString(), 10)].type === 'date' || cols[parseInt(p.toString(), 10)].type === 'datetime' || cols[parseInt(p.toString(), 10)].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 { 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","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 for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactColumnTemplateByUid(this.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactHeaderTemplateByUid(this.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\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","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 { 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.isFrozenGrid() ?\n this.parent.contentModule.tempFreezeRows : 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 { remove, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn } 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: { tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox',\n 'aria-label': this.localizer.getConstant('CheckBoxLabel') } });\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 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 td.setAttribute('aria-label', node.getAttribute('aria-label'));\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' || column.type === 'dateonly') && !isNullOrUndefined(value)) {\n value = new Date(value);\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 node.setAttribute('aria-label', innerHtml + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\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 node.setAttribute('aria-label', this.localizer.getConstant('CheckBoxLabel'));\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 node.setAttribute('aria-label', checked + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\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","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 } 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');\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 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) {\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 var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\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) {\n var rowsObject = this_1.parent.isFrozenGrid() ?\n this_1.parent.contentModule.tempFreezeRows : 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.colSpan > 1 || row.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\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 }\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 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 });\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.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg_1.row.querySelector('.e-rowdragdrop');\n var cellIdx = this.parent.groupSettings.columns.length + (isDrag || this.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_1.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 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 && this.parent.frozenColumns !== 0;\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.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","/**\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 { 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 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.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, this.parent.isFrozenGrid());\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');\n var lastRowCell = this.parent.getContentTable().querySelector('tr:last-child td:last-child');\n if ((e.target === firstHeaderCell || lastRowCell) && e.relatedTarget && !parentsUntil(e.relatedTarget, 'e-grid')\n && !this.firstHeaderCellClick) {\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 // 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');\n firstHeaderCell.tabIndex = 0;\n if (this.parent.isFrozenGrid() && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === literals.leftRight)) {\n this.setActive(false, true);\n }\n else {\n this.setActive(false);\n }\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 var isFrozen = !isNullOrUndefined(closest(e.target, '.' + literals.frozenContent)) ||\n !isNullOrUndefined(closest(e.target, '.' + literals.frozenHeader));\n var isFrozenRight = false;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n isFrozenRight = !isNullOrUndefined(closest(e.target, '.e-frozen-right-content')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozen-right-header'));\n isFrozen = isFrozen && !isFrozenRight;\n }\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader))) {\n this.clearOutline();\n return;\n }\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')) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n if (this.parent.isFrozenGrid() && isHeader && e.target === this.parent.getHeaderContent().firstChild\n && this.active.matrix.current[0] === -1 && this.active.matrix.current[1] === this.active.matrix.columns) {\n this.active.matrix.current = [0, 0];\n }\n this.focus();\n if (this.currentInfo.element.classList.contains('e-rowcell')) {\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n var isFrozenGrid = this.parent.isFrozenGrid();\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 && 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.skipOn(e)) {\n return;\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent') && !isFrozenGrid) {\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 (isFrozenGrid && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === literals.leftRight)) {\n this.setActive(false, true);\n }\n else if (this.parent.allowGrouping && 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 prevActiveName = this.getActiveName();\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 && !(isFrozenGrid && this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader, swapInfo.toFrozen, swapInfo.toFrozenRight);\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 = isFrozenGrid && this.parent.editSettings.mode === 'Batch' && e.target && (e.action === 'tab'\n || e.action === 'shiftTab') && (parentsUntil(e.target, 'e-gridheader')\n || parentsUntil(e.target, 'e-gridcontent')) ? undefined\n : this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (!isFrozenGrid) {\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()) {\n returnVal = true;\n this.setActive(true);\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 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 else {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.setFrozenBatchEditCell(prevActiveName, prevBatchValue, e.action === 'tab' ? true : false);\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString() && !swapInfo.swap\n && !(this.parent.editSettings.mode === 'Batch' && !(this.getActiveName() === prevActiveName))) {\n this.focusOutFromHeader(e);\n return;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (!isFrozenGrid) {\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 && 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 else {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.setFrozenBatchEditCell(prevActiveName, prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()\n && this.getActiveName() === prevActiveName) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\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.setFrozenBatchEditCell = function (currentActiveName, currentCellIndex, next, nextRow) {\n var gObj = this.parent;\n var nextCell;\n var nextSection = false;\n if (nextRow !== undefined) {\n nextCell = [nextRow, next ? 0 : this.active.matrix.matrix[parseInt(nextRow.toString(), 10)].length - 1];\n }\n else {\n nextCell = next ? [currentCellIndex[0], currentCellIndex[1] + 1] : [currentCellIndex[0], currentCellIndex[1] - 1];\n }\n if (this.active.matrix.matrix[nextCell[0]] && this.active.matrix.matrix[nextCell[0]][nextCell[1]]) {\n if (this.isValidBatchEditCell(nextCell)) {\n this.active.matrix.current = nextCell;\n }\n else {\n var prevNextCell = nextCell;\n nextCell = this.findBatchEditCell(nextCell, next, true);\n if (prevNextCell.toString() === nextCell.toString()) {\n nextSection = true;\n }\n else {\n this.active.matrix.current = nextCell;\n }\n }\n }\n else {\n nextSection = true;\n }\n if (nextSection) {\n var activeName = this.getActiveName();\n var frozenMode = gObj.getFrozenMode();\n var rowIndex = nextCell[0];\n var rowDec = rowIndex - 1;\n var rowInc = rowIndex + 1;\n var notPrev = !next && rowDec === -1;\n var notNext = next && rowInc > this.active.matrix.matrix.length - 1;\n var returnCurrentActiveName = ((activeName === 'FrozenLeftHeader' || (activeName === 'Movableheader'\n && frozenMode === 'Right')) && notPrev) || ((activeName === 'FrozenRightContent' || (activeName === 'MovableContent'\n && frozenMode === 'Left')) && notNext);\n if (returnCurrentActiveName) {\n this.setActiveByName(currentActiveName);\n this.active.matrix.current = currentCellIndex;\n }\n else {\n var frozenLeftRightPrev = frozenMode === 'Left-Right' && !next;\n var frozenLeftRightNext = frozenMode === 'Left-Right' && next;\n var frozenLeftNotNext = frozenMode === 'Left' && notNext;\n var frozenLeftNext = frozenMode === 'Left' && next;\n var frozenRightPrev = frozenMode === 'Right' && !next;\n var frozenRightNotPrev = frozenMode === 'Right' && notPrev;\n var content = (activeName === 'Movableheader' && frozenLeftNotNext) || (activeName === 'FrozenRightHeader'\n && notNext) || (activeName === 'FrozenLeftContent' && !notPrev) || (activeName === 'MovableContent'\n && !frozenRightNotPrev) || activeName === 'FrozenRightContent';\n var frozenContent = ((activeName === 'Movableheader' || activeName === 'MovableContent')\n && !frozenLeftRightNext) || ((activeName === 'FrozenRightHeader' || activeName === 'FrozenRightContent')\n && frozenLeftRightNext);\n var frozenRightContent = ((activeName === 'FrozenLeftHeader' || activeName === 'FrozenLeftContent')\n && frozenLeftRightPrev) || ((activeName === 'Movableheader' || activeName === 'MovableContent')\n && frozenLeftRightNext);\n this.setActive(content, frozenContent, frozenRightContent);\n var nextIndex = (activeName === 'Movableheader' && frozenLeftNotNext)\n || (activeName === 'FrozenRightHeader' && notNext) ? 0\n : ((activeName === 'Movableheader' || activeName === 'MovableContent') && frozenLeftNext)\n || ((activeName === 'FrozenRightHeader' || activeName === 'FrozenRightContent') && next) ? rowInc\n : (activeName === 'FrozenLeftContent' && notPrev)\n || (activeName === 'MovableContent' && frozenRightNotPrev) ? this.active.matrix.matrix.length - 1\n : ((activeName === 'FrozenLeftHeader' || activeName === 'FrozenLeftContent') && !next)\n || ((activeName === 'Movableheader' || activeName === 'MovableContent') && frozenRightPrev) ? rowDec\n : rowIndex;\n this.setFrozenBatchEditCell(currentActiveName, currentCellIndex, next, nextIndex);\n }\n }\n };\n FocusStrategy.prototype.getActiveName = function () {\n var activeName;\n if (this.active) {\n var activeTable = this.active.getTable();\n activeName = parentsUntil(activeTable, 'e-frozen-left-header') ? 'FrozenLeftHeader' :\n parentsUntil(activeTable, 'e-movableheader') ? 'Movableheader' :\n parentsUntil(activeTable, 'e-frozen-right-header') ? 'FrozenRightHeader' :\n parentsUntil(activeTable, 'e-frozen-left-content') ? 'FrozenLeftContent' :\n parentsUntil(activeTable, 'e-movablecontent') ? 'MovableContent' :\n parentsUntil(activeTable, 'e-frozen-right-content') ? 'FrozenRightContent' :\n undefined;\n }\n return activeName;\n };\n FocusStrategy.prototype.setActiveByName = function (activeName) {\n var frozenMode = this.parent.getFrozenMode();\n switch (activeName) {\n case 'FrozenLeftHeader':\n this.setActive(false, true);\n break;\n case 'Movableheader':\n this.setActive(false);\n break;\n case 'FrozenRightHeader':\n this.setActive(false, frozenMode === 'Right' ? true : false, frozenMode === 'Right' ? false : true);\n break;\n case 'FrozenLeftContent':\n this.setActive(true, true);\n break;\n case 'MovableContent':\n this.setActive(true);\n break;\n case 'FrozenRightContent':\n this.setActive(true, frozenMode === 'Right' ? true : false, frozenMode === 'Right' ? false : true);\n break;\n }\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.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 if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\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 return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || ((filterCell && this.parent.enableHeaderFocus) || (filterCell && 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, isFrozen, isFrozenRight) {\n this.active = content ? isFrozen ? this.fContent : isFrozenRight ? this.frContent : this.content :\n isFrozen ? this.fHeader : isFrozenRight ? this.frHeader : 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 {\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.currentInfo.element.classList.contains('e-rowcell') && !this.currentInfo.element.parentElement) {\n this.currentInfo.element = this.parent.getCellFromIndex(this.prevIndexes.rowIndex, this.prevIndexes.cellIndex);\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, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true, this.parent.isFrozenGrid());\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 && (e.args && e.args.isFrozen) && !_this.fContent) {\n _this.fContent = new FixedContentFocus(_this.parent);\n }\n else if (content && !_this.frContent && (e.args && e.args.renderFrozenRightContent)) {\n _this.frContent = new FixedRightContentFocus(_this.parent);\n }\n else if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && (e.args && e.args.isFrozen) && !_this.fHeader) {\n _this.fHeader = new FixedHeaderFocus(_this.parent);\n }\n else if (!content && (e.args && e.args.renderFrozenRightContent) && !_this.frHeader) {\n _this.frHeader = new FixedRightHeaderFocus(_this.parent);\n }\n else if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? (e.args && e.args.isFrozen) ? _this.fContent : (e.args && e.args.renderFrozenRightContent)\n ? _this.frContent : _this.content : (e.args && e.args.isFrozen) ? _this.fHeader : (e.args && e.args.renderFrozenRightContent)\n ? _this.frHeader : _this.header;\n var rows = content ? e.rows.slice(_this.parent.frozenRows) : e.rows;\n var updateRow = content ? e.rows.slice(0, _this.parent.frozenRows) : 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 var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n if (e.name === 'batchAdd' && _this.parent.isFrozenGrid()) {\n var mRows = _this.parent.getMovableRowsObject().slice(_this.parent.frozenRows);\n var newMovableRows = mRows.map(function (row) { return row.clone(); });\n var newFrozenRows = rows.map(function (row) { return row.clone(); });\n _this.fContent.matrix.generate(newFrozenRows, _this.fContent.selector, isRowTemplate);\n _this.content.matrix.generate(newMovableRows, _this.content.selector, isRowTemplate);\n if (_this.parent.getFrozenMode() === literals.leftRight) {\n var frRows = _this.parent.getFrozenRightRowsObject().slice(_this.parent.frozenRows);\n var newfrRows = frRows.map(function (row) { return row.clone(); });\n _this.frContent.matrix.generate(newfrRows, _this.frContent.selector, isRowTemplate);\n }\n }\n else {\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n }\n if (!(_this.parent.isFrozenGrid() && ((e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave' || e.args.requestType === 'paging'))\n || e.name === 'batchAdd' || e.name === 'batchCancel'))) {\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: (e.args && e.args.isFrozen) ? _this.fHeader\n : (e.args && e.args.renderFrozenRightContent) ? _this.frHeader : _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 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)) {\n _this.isVirtualScroll = true;\n _this.focus();\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 }\n if (e && e.args && e.args.requestType === 'infiniteScroll') {\n _this.isInfiniteScroll = true;\n }\n };\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.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: '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.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 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.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\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 var _this = this;\n if (!this.parent.isFrozenGrid() && 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: _this.parent.isFrozenGrid() }); },\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, swap.toFrozen);\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'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\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.isFrozenGrid() ?\n this.parent.getContent().querySelector('.e-movablecontent .e-table') :\n this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var navigator = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigator, 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 cell = this.getTable().rows[parseInt(rowIndex.toString(), 10)].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 && 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 _a = [target.parentElement.rowIndex, 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 info.element = !isNullOrUndefined(this.getTable().rows[parseInt(rowIndex.toString(), 10)]) ?\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? 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 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 query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\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 var frozenSwap = (this.parent.getFrozenLeftCount() &&\n ((action === 'leftArrow' || action === 'shiftTab') && current[1] === 0))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab' && this.parent.getFrozenMode() === 'Left'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var right = ((action === 'rightArrow' || action === 'tab')\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right'\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var frSwap = this.parent.getFrozenMode() === literals.leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var headerSwap = ((action === 'upArrow' || enterFrozen) && current[0] === 0)\n || (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right' && current[0] === 0\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n if (!this.parent.isFrozenGrid() && action === 'tab' &&\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 frozenSwap = this.parent.isFrozenGrid();\n }\n if (!this.parent.isFrozenGrid() && 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 = document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && row.classList.contains(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n if (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right' && current[0] === 0\n && current[1] === this.matrix.matrix[current[0]].indexOf(1)) {\n this.matrix.current[0] = -1;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) || frozenSwap || frSwap : false,\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\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 (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n if (action === 'leftArrow' || action === 'shiftTab') {\n current[0] = previous[0];\n current[1] = this.matrix.matrix[current[0]].length;\n }\n if (this.parent.getFrozenMode() === literals.leftRight && (action === 'rightArrow' || action === 'tab')) {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (this.parent.getFrozenMode() === 'Right' && action === 'tab') {\n current[0] = previous[0] + 1;\n current[1] = -1;\n }\n }\n else 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 if (action === 'shiftTab' && this.parent.getFrozenMode() === 'Left') {\n current[0] = previous[0] - 1;\n current[1] = this.matrix.matrix[current[0]].length;\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 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.isFrozenGrid() ?\n this.parent.getHeaderContent().querySelector('.e-movableheader .e-table') :\n 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) {\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 _a = [target.parentElement.rowIndex, 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(target.parentElement.rowIndex, 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 info.element = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\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 frozenSwap = (this.parent.getFrozenLeftCount() &&\n (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') && (current[1] === 0\n || current[1] === this.matrix.matrix[current[0]].indexOf(1))) || (this.parent.getFrozenMode() === 'Left' && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var right = ((action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion())\n || action === 'tab') && (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)))\n || (current[0] > 0 && action === 'shiftTab' && this.parent.getFrozenMode() === 'Right'\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var frSwap = this.parent.getFrozenMode() === literals.leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n var headerSwap = frozenSwap && !(this.parent.getFrozenMode() === 'Left' && action === 'tab'\n && current[0] === this.matrix.matrix.length - 1) || frSwap;\n var fMatrix = this.parent.focusModule.fHeader && this.parent.focusModule.fHeader.matrix.matrix;\n var isPresent = fMatrix && !isNullOrUndefined(fMatrix[current[0]]);\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 if (this.parent.isFrozenGrid() && lastRow && isLastCell) {\n frozenSwap = true;\n headerSwap = false;\n }\n }\n if (action === 'tab' && this.parent.getFrozenMode() === 'Left' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && (frozenSwap || frSwap)) || (action === 'tab' && lastRow && isLastCell),\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === literals.leftRight) {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current1[0] = previous[0];\n current1[1] = this.matrix.matrix[current1[0]].length;\n }\n if (this.parent.getFrozenMode() === literals.leftRight\n && (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab')) {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n }\n else 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 if (this.parent.getFrozenMode() === 'Left' && action === 'shiftTab') {\n current1[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current1[1] = this.matrix.matrix[current1[0]].length;\n }\n if (this.parent.getFrozenMode() === 'Right' && action === 'tab') {\n current1[0] = previous[0] + 1;\n current1[1] = -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 var headerTable = this.getHeaderType() === 'FixedHeaderFocus' && this.parent.getFrozenMode() !== 'Right' ? literals.frozenLeft :\n this.getHeaderType() === 'FixedHeaderFocus' || this.getHeaderType() === 'FixedRightHeaderFocus' ? literals.frozenRight : 'movable';\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, headerTable);\n }\n else {\n if (!this.parent.isFrozenGrid() || (this.parent.isFrozenGrid()\n && cells[parseInt(i.toString(), 10)].column.freezeTable === headerTable)) {\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 };\n HeaderFocus.prototype.checkFilterColumn = function (rowColumns, rowIndex, columnIndex, headerTable) {\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, headerTable);\n }\n else {\n if (!this.parent.isFrozenGrid() || (this.parent.isFrozenGrid()\n && columns[parseInt(i.toString(), 10)].freezeTable === headerTable)) {\n this.matrix.set(rowIndex, incrementNumber, columns[parseInt(i.toString(), 10)].visible && columns[parseInt(i.toString(), 10)].allowFiltering !== false);\n incrementNumber++;\n }\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 };\nvar FixedContentFocus = /** @class */ (function (_super) {\n __extends(FixedContentFocus, _super);\n function FixedContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozencontent .e-table');\n };\n FixedContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = ((action === 'upArrow' || enterFrozen) && current[0] === 0)\n || (action === 'shiftTab' && this.parent.getFrozenMode() !== 'Right'\n && current[0] === 0 && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var fSwap = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n var frSwap = action === 'shiftTab' && this.parent.getFrozenMode() === literals.leftRight\n && current[1] === this.matrix.matrix[current[0]].indexOf(1);\n if (this.parent.getFrozenMode() === 'Right') {\n var swap = toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0)\n || (action === 'tab' && current[0] < this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n return { swap: swap, toHeader: toHeader, toFrozen: fSwap };\n }\n if (action === 'shiftTab' && current[0] === 0 && current[1] === this.matrix.matrix[current[0]].indexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return {\n swap: toHeader || ((action === 'tab' || action === 'rightArrow')\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1)),\n toHeader: toHeader,\n toFrozen: fSwap,\n toFrozenRight: frSwap\n };\n };\n FixedContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'shiftTab') {\n current2[0] = previous[0] - 1;\n current2[1] = this.matrix.matrix[current2[0]].length;\n }\n }\n else {\n if (action === 'tab' && this.parent.enableHeaderFocus) {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'leftArrow' || action === 'shiftTab') {\n current2[0] = previous[0];\n current2[1] = this.matrix.matrix[previous[0]].length;\n }\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n if (action === 'tab' && this.parent.getFrozenMode() !== 'Right') {\n current2[0] = previous[0] + 1;\n current2[1] = -1;\n }\n return current2;\n };\n return FixedContentFocus;\n}(ContentFocus));\nexport { FixedContentFocus };\nvar FixedHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedHeaderFocus, _super);\n function FixedHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedHeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var hMatrix = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = hMatrix && !isNullOrUndefined(hMatrix[current[0]]);\n if (this.parent.getFrozenMode() === 'Right') {\n var frSwap_1 = ((action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && (current[1] === 0 || current[1] === this.matrix.matrix[current[0]].indexOf(1)))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var swap = ((action === 'downArrow' || enterFrozen || (action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frSwap_1);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n if (action === 'tab' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return { swap: swap, toHeader: frSwap_1, toFrozen: toFrozen };\n }\n var frSwap = current[0] > 0 && action === 'shiftTab' && this.parent.getFrozenMode() === literals.leftRight\n && current[1] === this.matrix.matrix[current[0]].indexOf(1);\n return {\n swap: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1 || ((action === 'rightArrow' ||\n (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) && isPresent)\n || (action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1) && current[0] > 0),\n toHeader: (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1) && current[0] > 0),\n toFrozen: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1,\n toFrozenRight: frSwap\n };\n };\n FixedHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozenheader .e-table'));\n };\n FixedHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n if (action === 'shiftTab') {\n current3[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n }\n else {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current3[0] = previous[0];\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n if (action === 'tab' && this.parent.getFrozenMode() !== 'Right') {\n current3[0] = previous[0] + 1;\n current3[1] = -1;\n }\n return current3;\n };\n FixedHeaderFocus.prototype.getHeaderType = function () {\n return 'FixedHeaderFocus';\n };\n return FixedHeaderFocus;\n}(HeaderFocus));\nexport { FixedHeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox) {\n this.searchBox = searchBox;\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', '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'))) {\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 };\nvar FixedRightContentFocus = /** @class */ (function (_super) {\n __extends(FixedRightContentFocus, _super);\n function FixedRightContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozen-right-content .e-table');\n };\n FixedRightContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n var toFrozenSwap = this.parent.getFrozenMode() === literals.leftRight && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n return {\n swap: toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0)\n || (action === 'tab' && current[0] < this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)),\n toHeader: toHeader,\n toFrozenRight: toHeader,\n toFrozen: toFrozenSwap\n };\n };\n FixedRightContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n if (action === 'shiftTab') {\n current2[0] = previous[0] - 1;\n current2[1] = this.matrix.matrix[current2[0]].length;\n }\n return current2;\n };\n return FixedRightContentFocus;\n}(ContentFocus));\nexport { FixedRightContentFocus };\nvar FixedRightHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedRightHeaderFocus, _super);\n function FixedRightHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightHeaderFocus.prototype.jump = function (action, current) {\n var headerMat = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = headerMat && !isNullOrUndefined(headerMat[current[0]]);\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var frozenSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && (current[1] === 0 || current[1] === this.matrix.matrix[current[0]].indexOf(1))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var swap = ((action === 'downArrow' || enterFrozen || (action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frozenSwap);\n var fSwap = action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n var frSwap = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n if (action === 'tab' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return { swap: swap, toHeader: frozenSwap, toFrozen: fSwap, toFrozenRight: frSwap };\n };\n FixedRightHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozen-right-header .e-table'));\n };\n FixedRightHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n if (action === 'shiftTab') {\n current3[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n return current3;\n };\n FixedRightHeaderFocus.prototype.getHeaderType = function () {\n return 'FixedRightHeaderFocus';\n };\n return FixedRightHeaderFocus;\n}(HeaderFocus));\nexport { FixedRightHeaderFocus };\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, end) {\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 end = end && !start ? end + this.parent.getIndentCount() : end;\n return isNullOrUndefined(start) ? columns : columns.slice(start, end);\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\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 = !start ? this.parent.getIndentCount() : 0;\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, end);\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 val = types[parseInt(i.toString(), 10)] !== 'Custom' && group.aggregates && 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","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 (format.type) {\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","import { isNullOrUndefined } 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' }), columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\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 = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - 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) {\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;\n var frzCols = this.parent.getFrozenColumns();\n var isDraggable = this.parent.isRowDragable();\n frzCols = frzCols && isDraggable ? frzCols + 1 : frzCols;\n var mHdr = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var mCont = this.parent.getContent().querySelector('.' + literals.movableContent);\n var freezeLeft = this.parent.getFrozenLeftColumnsCount();\n var freezeRight = this.parent.getFrozenRightColumnsCount();\n var movableCount = this.parent.getMovableColumnsCount();\n var isColFrozen = freezeLeft !== 0 || freezeRight !== 0;\n if (frzCols && index >= frzCols) {\n if (!mHdr || !mHdr.querySelector(literals.colGroup)) {\n return;\n }\n headerCol = mHdr\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mHdr.scrollLeft > 0) {\n var colGroup = mHdr.querySelector(literals.colGroup);\n headerCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n index = isDraggable ? index - 1 : index;\n target = index < freezeLeft ? header : mHdr;\n }\n else if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? header : mHdr;\n }\n else if (freezeLeft && freezeRight) {\n index = isDraggable ? index - 1 : index;\n var frHdr = this.parent.getFrozenRightHeader();\n target = index < freezeLeft ? header : index < (freezeLeft + movableCount) ? mHdr : frHdr;\n }\n headerCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n if (!headerCol) {\n return;\n }\n }\n else {\n headerCol = header.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n }\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol;\n if (frzCols && index >= frzCols) {\n contentCol = this.parent.getContent().querySelector('.' + literals.movableContent)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mCont.scrollLeft > 0) {\n var colGroup = this.parent.getContent().querySelector('.' + literals.movableContent)\n .querySelector(literals.colGroup);\n contentCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n target = index < freezeLeft ? content : mCont;\n }\n if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? content : mCont;\n }\n if (freezeLeft && freezeRight) {\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n target = index < freezeLeft ? content : index < (freezeLeft + movableCount) ? mCont : frCont;\n }\n contentCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n }\n else {\n contentCol = content.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n }\n if (contentCol && !clear) {\n if (contentCol.style.width !== headerCol.style.width && this.parent.isFrozenGrid() && this.parent['reorderModule'] &&\n this.parent['reorderModule'].element && this.parent['reorderModule'].destElement) {\n contentCol.style.display = this.parent.getColumnByIndex(index).visible ? '' : 'none';\n }\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization) {\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) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshFrozenScrollbar();\n }\n };\n ColumnWidthService.prototype.getColumnLevelFrozenColgroup = function (index, left, movable, ele) {\n if (!ele || !ele.querySelector(literals.colGroup)) {\n return null;\n }\n var columns = this.parent.getColumns();\n var isDrag = this.parent.isRowDragable();\n var frzMode = this.parent.getFrozenMode();\n var headerCol;\n var colGroup = [].slice.call(ele.querySelector(literals.colGroup + ':not(.e-masked-colgroup)').children);\n if (frzMode === 'Right' && isDrag && index === (movable + this.parent.getFrozenRightColumnsCount())) {\n headerCol = colGroup[colGroup.length - 1];\n }\n else if (isDrag && index === -1) {\n headerCol = colGroup[0];\n }\n else if (columns[parseInt(index.toString(), 10)].freeze === 'Left') {\n headerCol = colGroup[isDrag ? (index + 1) : index];\n }\n else if (columns[parseInt(index.toString(), 10)].freeze === 'Right') {\n headerCol = colGroup[index - (left + movable)];\n }\n else {\n headerCol = colGroup[index - left];\n }\n return headerCol;\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 frozenScrollbar = this.parent.element.querySelector('.e-frozenscrollbar');\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var frozencontent = this.parent.getContent().querySelector('.' + literals.frozenContent);\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent);\n var frozenWidth = frozencontent.firstElementChild.getBoundingClientRect().width;\n var movableWidth = movableContent.firstElementChild.getBoundingClientRect().width;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenWidth = frozenWidth + scrollWidth;\n }\n frozenScrollbar.style.width = frozenWidth + 'px';\n if (this.parent.getFrozenMode() === literals.leftRight) {\n var frozenRightScrollbar = this.parent.element.querySelector('.e-frozen-right-scrollbar');\n var frozenRightWidth = this.parent.getContent().querySelector('.e-frozen-right-content')\n .firstElementChild.getBoundingClientRect().width;\n if (this.parent.height !== 'auto') {\n frozenRightWidth = frozenRightWidth + scrollWidth;\n }\n frozenRightScrollbar.style.width = frozenRightWidth + 'px';\n }\n else {\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getMovableVirtualContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.getFrozenMode() !== 'Right' && this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\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 (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (this.parent.isFrozenGrid() && isNullOrUndefined(column.width) &&\n (column.getFreezeTableName() === literals.frozenLeft || column.getFreezeTableName() === literals.frozenRight)) {\n column.width = 200;\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 return column.minWidth;\n }\n else if ((column.maxWidth && 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 for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.calcMovableOrFreezeColWidth = function (tableType) {\n var columns = this.parent.getColumns().slice();\n var left = this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (tableType === 'movable') {\n if (right) {\n columns.splice(left + movable, columns.length);\n }\n if (left) {\n columns.splice(0, left);\n }\n }\n else if (tableType === 'freeze-left') {\n columns.splice(left, columns.length);\n }\n else if (tableType === 'freeze-right') {\n columns.splice(0, left + movable);\n }\n return formatUnit(this.getTableWidth(columns));\n };\n ColumnWidthService.prototype.setWidthToFrozenRightTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-right');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n var headerTbl = this.parent.getHeaderContent().querySelector('.e-frozen-right-header')\n .querySelector('.' + literals.table + ':not(.e-masked-table)');\n var cntTbl = this.parent.getContent().querySelector('.e-frozen-right-content')\n .querySelector('.' + literals.table + ':not(.e-masked-table)');\n headerTbl.style.width = freezeWidth;\n cntTbl.style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenLeftTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-left');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.getHeaderTable().style.width = freezeWidth;\n this.parent.getContentTable().style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableTable = function () {\n var movableWidth = '';\n var isColUndefined = this.parent.getColumns().filter(function (a) { return isNullOrUndefined(a.width); }).length >= 1;\n var isWidthAuto = this.parent.getColumns().filter(function (a) { return (a.width === 'auto'); }).length >= 1;\n var movableHeader = this.parent.getHeaderContent().querySelector('.' + literals.movableHeader);\n var movableContent = this.parent.getContent().querySelector('.' + literals.movableContent);\n if (typeof this.parent.width === 'number' && !isColUndefined && !isWidthAuto && !this.parent.resizeModule.resizeProcess) {\n movableWidth = formatUnit(this.parent.width - parseInt(this.calcMovableOrFreezeColWidth('freeze').split('px')[0], 10) - 5);\n }\n else if (!isColUndefined && !isWidthAuto) {\n movableWidth = this.calcMovableOrFreezeColWidth('movable');\n }\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n if (movableHeader.firstElementChild) {\n if (movableHeader.firstElementChild.classList.contains('e-masked-table')) {\n movableHeader.childNodes[1].style.width = movableWidth;\n }\n else {\n movableHeader.firstElementChild.style.width = movableWidth;\n }\n }\n if (movableContent.firstElementChild.classList.contains('e-masked-table')) {\n movableContent.childNodes[1].style.width = movableWidth;\n }\n else {\n movableContent.firstElementChild.style.width = movableWidth;\n }\n };\n ColumnWidthService.prototype.setWidthToFrozenEditTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[0].style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableEditTable = function () {\n var movableWidth = this.calcMovableOrFreezeColWidth('movable');\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[1].style.width = movableWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.isFrozenGrid()) {\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n this.setWidthToFrozenLeftTable();\n }\n this.setWidthToMovableTable();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.setWidthToFrozenRightTable();\n }\n }\n else {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n }\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit && this.parent.getFrozenColumns()) {\n this.setWidthToFrozenEditTable();\n this.setWidthToMovableEditTable();\n }\n else 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","/* 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 * 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 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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n args.element.addEventListener('focus', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n if (args.floatLabelType === 'Auto') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n });\n args.element.addEventListener('blur', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n if (args.floatLabelType === 'Auto' && args.element.value === '') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n });\n args.element.addEventListener('input', function () {\n checkInputValue(floatType, args.element);\n });\n }\n Input.bindInitialEvent = bindInitialEvent;\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n var inputParent = inputElement.parentElement;\n var grandParent = 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 element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('input', function (event) {\n updateLabelState(args.element.value, floatLabelElement, args.element);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('blur', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction === undefined || isBindClearAction) {\n button.addEventListener('click', function (event) {\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 }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('input', function (event) {\n updateIconState(element.value, button);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('focus', function (event) {\n updateIconState(element.value, button, element.readOnly);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('blur', function (event) {\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 }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function destroy() {\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 === 'Auto' && value === '') {\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 var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'), 10);\n if (!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 parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = placeholder : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = '' : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\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': '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 if (type !== 'Never') {\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 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 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 {InputObject} 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())].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())].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString())].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())].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString())].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 _onMouseDownRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = 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 // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = 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 /* eslint-disable @typescript-eslint/indent */\n function addIcon(position, icons, container, input, internalCreate) {\n /* eslint-enable @typescript-eslint/indent */\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 /* eslint-disable @typescript-eslint/indent */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n /* eslint-enable @typescript-eslint/indent */\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())];\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})(Input || (Input = {}));\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, 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.isVue = false;\n _this.preventChange = false;\n _this.isAngular = 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 (!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', '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 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 // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\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 && _this.decimals === 0 && _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 // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = 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) || ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && 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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = 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 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 _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\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 /* 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 NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\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","/* 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, \n // eslint-disable-next-line\n 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 {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} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-disable-next-line\n 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 {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 {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-disable-next-line\n 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 {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - 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, \n // eslint-disable-next-line\n 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 // eslint-disable-next-line no-prototype-builtins\n !typeofData(dataSource).item.hasOwnProperty(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 // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(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 // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !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, \n // eslint-disable-next-line no-prototype-builtins\n (curItem.hasOwnProperty('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') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\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 // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(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, \n // eslint-disable-next-line\n 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} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\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 */\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- Specifies final result sort order.\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 */\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 function getDataSource(dataSource, query) {\n // eslint-disable-next-line\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 */\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 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 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 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 {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-disable-next-line\n 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 // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\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} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - 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 // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n // eslint-disable-next-line @typescript-eslint/ban-types\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 // eslint-disable-next-line\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 function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\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 // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\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 // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(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 // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(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 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 function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(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 // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // eslint-disable-next-line\n 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 // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('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 // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== \"listview\") {\n // eslint-disable-next-line\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 // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\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 {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 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 {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 function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n // eslint-disable-next-line @typescript-eslint/ban-types\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} dataSource - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\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}\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 { 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","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 EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\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 if (itemObj && !isNOU(itemObj.click)) {\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 popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\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 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 eleStyles = window.getComputedStyle(this.element);\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 = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\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 {\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 setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\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 setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\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 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 = { minWidth: el.style.minWidth, height: el.style.height, minHeight: el.style.minHeight };\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);\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 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 ? 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 if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(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 this.updateTabIndex('-1');\n curEle.removeAttribute('tabindex');\n }\n else {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\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 var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\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 var wid = tEle.offsetWidth;\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","/**\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 var zoomingFactor = 1;\n var parentWithZoomStyle = element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n zoomingFactor = parseFloat(getComputedStyle(parentWithZoomStyle).zoom);\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft() / zoomingFactor;\n var containerRight = ContainerRight() / zoomingFactor;\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() / zoomingFactor;\n var containerBottom = ContainerBottom() / zoomingFactor;\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 // eslint-disable-next-line\n var topData = '', leftData = '';\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 //eslint-disable-next-line\n var left = 0, 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 if (element.offsetParent) {\n var transformStyle = getComputedStyle(element.offsetParent).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)) + 'px';\n element.style.left = ((pos.position.left / scaleX) + pos.offsetX - (left)) + 'px';\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 {void}\n */\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\n/**\n * @returns {void}\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 * 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-date-range-wrapper') || element.classList.contains('e-ddl') || element.classList.contains('e-multiselect'))) ? (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","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\n/* eslint-disable */\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;\n/* eslint-enable */\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}\n// eslint-disable-next-line\nfunction wireEvents(args) {\n if (isNOU(args)) {\n args = this;\n }\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, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\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, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\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 proxy = this;\n if (resizeStart(e, proxy) === 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 proxy = this;\n resizeEnd(e, proxy);\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 proxy = this;\n if (resizeStart(e, proxy) === 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 proxy = this;\n resize(e, proxy);\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/* istanbul ignore next */\n// eslint-disable-next-line\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/* istanbul ignore next */\n// eslint-disable-next-line\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/* istanbul ignore next */\n// eslint-disable-next-line\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/* istanbul ignore next */\n// eslint-disable-next-line\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 } 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 // eslint-disable-next-line\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 // eslint-disable-next-line\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\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 }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\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 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 _this.element.style.position = 'relative';\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 // eslint-disable-next-line\n var primaryBtnFlag = true;\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? 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 (!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.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\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 // eslint-disable-next-line\n var blazorContain = Object.keys(window);\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 // eslint-disable-next-line\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\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-labelledby': this.element.id + '_title' });\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 // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n typeof (this.content) === 'string' ? (this.isBlazorServerRender() && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() : this.contentEle.appendChild(this.content);\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 // eslint-disable-next-line\n this.visible ? this.show() : this.hide();\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 var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\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 = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.X) ? oldProp.position.X : this.position.X;\n var positionY = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.Y) ? oldProp.position.Y : this.position.Y;\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 /**\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 if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\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 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 window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.windowResizeHandler.bind(this));\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 if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\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 _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 _this.element.style.position = 'relative';\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 + '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' ? _this.popupObj.show() : _this.popupObj.show(openAnimation);\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 (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 + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.hide() : _this.popupObj.hide(closeAnimation);\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 // eslint-disable-next-line\n /**\n * Specifies to view the Full screen Dialog.\n *\n * @returns {void}\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 this.element.style.top = document.scrollingElement.scrollTop + 'px';\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 // eslint-disable-next-line\n var dialogComponent;\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 // eslint-disable-next-line\n var dialogComponent;\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 return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\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 } 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 // eslint-disable-next-line\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n // eslint-disable-next-line\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\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 _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 // eslint-disable-next-line\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\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 // eslint-disable-next-line\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\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 anchorPos.left += (anchorRect.width - eleRect.width);\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' && !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","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_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_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// eslint-disable-next-line\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 = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\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 // eslint-disable-next-line\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\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 // eslint-disable-next-line\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 createFluentSinner(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 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 createFluentSinner(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 // eslint-disable-next-line\n var increment = false, 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 '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 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')) && !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')) && !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') {\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 // eslint-disable-next-line\n var startArc = 315, 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 // eslint-disable-next-line\n if (spinWrapCollection[i].parentElement && spinWrapCollection[i].parentElement === container) {\n // eslint-disable-next-line\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 = void 0;\n // eslint-disable-next-line\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !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 // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n // eslint-disable-next-line\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\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// eslint-disable-next-line\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","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 } 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 } 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 /* eslint-enable */\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.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 () {\n var eleRect = this.tooltipEle.getBoundingClientRect();\n var xScalingFactor = (Math.round(eleRect.width) / this.tooltipEle.offsetWidth) || 1;\n var yScalingFactor = (Math.round(eleRect.height) / this.tooltipEle.offsetHeight) || 1;\n return {\n x: isFinite(xScalingFactor) ? xScalingFactor : 1,\n y: isFinite(yScalingFactor) ? yScalingFactor : 1\n };\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 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();\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 if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = 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, tipHeight, tooltipEleWidth, tooltipEleHeight, arrowEle;\n var tipAdjust, tipHeightAdjust, 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 if (this.showTipPointer === false) {\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 arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\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 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.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n if (this.enableHtmlParse) {\n var nodeList = tempArr.length;\n for (var i = 0; i < nodeList; i++) {\n tooltipContent[append(tempArr, tooltipContent), 'innerHTML'] = this.content;\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\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 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 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.addDataTooltipId = function (target, id) {\n attributes(target, { 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDataTooltipId = function (target) {\n target.removeAttribute('data-tooltip-id');\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\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 if (Object.keys(this.htmlAttributes).length !== 0) {\n for (var attr in this.htmlAttributes) {\n if (attr === \"class\") {\n this.tooltipEle.classList.add(this.htmlAttributes[\"\" + attr]);\n }\n else {\n this.tooltipEle.setAttribute(attr, this.htmlAttributes[\"\" + attr]);\n }\n }\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.addDataTooltipId(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.addDataTooltipId(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) {\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,\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 && typeof tooltip.viewContainerRef !== 'string';\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.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + 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();\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 if (this.showTipPointer && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\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);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target) {\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: hideAnimation.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.removeDataTooltipId(target);\n };\n Tooltip.prototype.clear = function () {\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 (e) {\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) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\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 (e) {\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();\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 (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target = [].slice.call(selectAll(this.target, this.element));\n if (target.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\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.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 EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\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 if (this.element.nodeName !== \"BODY\") {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n else {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\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 }\n else {\n EventHandler.add(this.element, 'focus', 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 EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n if (this.element.nodeName === 'BODY') {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n else {\n var targetList = [].slice.call(selectAll(this.target, this.element));\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 }\n else {\n EventHandler.remove(this.element, 'focus', 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 arrowInnerELe.style.top = arrowInnerELe.style.left = null;\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 '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 };\n /**\n * It is used to destroy the Tooltip component.\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 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 };\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(false)\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","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 * React Component Base\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { extend, isNullOrUndefined, setValue, getValue, isObject } 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 reactUid = 0;\nvar isColEName = new RegExp('\\]');\n// tslint:disable\n/* eslint-disable @typescript-eslint/no-explicit-any */\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 // tslint:disable-next-line:no-any\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 // tslint:disable-next-line:no-any\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.refreshProperties(this.props, this.props);\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 // tslint:disable-next-line:no-any\n /**\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 /**\n * @private\n */\n ComponentBase.prototype.updateProperties = function (nextProps, silent) {\n var _this = this;\n var dProps = extend({}, nextProps);\n var keys = Object.keys(nextProps);\n // The statelessTemplates props value is taken from sample level property or default component property.\n var statelessTemplates = !isNullOrUndefined(this.props['statelessTemplates']) ? this.props['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(this.props[\"\" + 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 = this.props[\"\" + 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' && !this.properties.hasOwnProperty(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 // tslint:disable-next-line:no-any\n if (this.initRenderCalled && (this.canDelayUpdate || this.props.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 // tslint:disable-next-line:no-any\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 var PropVal = compTemplate[\"\" + prop];\n if (curObject[\"\" + prop]) {\n setValue(PropVal, getValue(prop, curObject), curObject);\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 var stringValue = ['autocomplete', 'dropdownlist', 'combobox'];\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) {\n if (this.htmlattributes[\"\" + prop] !== this.props[\"\" + prop]) {\n this.htmlattributes[\"\" + prop] = this.props[\"\" + prop];\n }\n }\n }\n if (!this.htmlattributes.ref) {\n /* tslint:disable:no-any */\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'];\n if (keycompoentns.indexOf(this.getModuleName()) !== -1) {\n this.htmlattributes.key = '' + ComponentBase.reactUid;\n ComponentBase.reactUid++;\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 this.clsName = false;\n }\n return this.htmlattributes;\n };\n /* tslint:disable:no-any */\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.constructor &&\n value1.constructor.name === value2.constructor.name &&\n (value1.constructor.name === 'Query' ||\n value1.constructor.name === '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 (!oldProp.hasOwnProperty(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 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 var key = dKeys[parseInt(i.toString(), 10)];\n if (!directiveValue.hasOwnProperty(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_1 = getValue(changes.key + '.' + changes.index, this);\n if (propInstance_1 && propInstance_1.setProperties) {\n propInstance_1.setProperties(changes.value);\n }\n else {\n extend(propInstance_1, 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 // tslint:disable-next-line:no-any\n if (this.initRenderCalled && this.isAppendCalled && this.element && ((!modulesName.indexOf(this.getModuleName())) ? document.body.contains(this.element) : true) && !this.isDestroyed && this.isCreated) {\n this.destroy();\n }\n };\n // tslint:disable:no-any\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 // tslint:disable:no-any\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 // tslint:disable:no-any\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 indexCount = 0;\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 indexCount++;\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 /* tslint:disable:no-any */\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 // tslint:disable\n var childProps = this.getChildProps(React.Children.toArray(child.props.children), key);\n if (childProps.length) {\n flag = true;\n // tslint:disable\n childCache[child.type.propertyName || ifield] = childProps;\n }\n }\n }\n if (flag) {\n return childCache;\n }\n return null;\n };\n // tslint:disable:no-any\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 // tslint:disable-next-line:no-any\n var field = this.getChildType(child);\n if (field === key) {\n if (accessProp || !prop.children) {\n // tslint:disable\n var cacheVal = extend({}, prop, {}, true);\n // tslint:disable\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 // tslint:disable\n this.processComplexTemplate(cachedValue, child.type);\n ret.push(cachedValue);\n }\n }\n }\n return ret;\n };\n // tslint:disable:no-any\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 /* tslint:disable:no-any */\n if (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/* tslint:enable:no-any */\n","// eslint-disable-next-line\nexport function applyMixins(derivedClass, baseClass) {\n // tslint:disable:typedef\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (name !== 'isMounted' && name !== 'replaceState') {\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/**\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 // eslint-disable-next-line\n Inject.prototype.render = function () {\n return null;\n };\n Inject.isService = true;\n return Inject;\n}(React.PureComponent));\nexport { Inject };\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/* eslint-disable @typescript-eslint/no-explicit-any */\nvar stringCompiler = getTemplateEngine();\n// eslint-disable-next-line\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 { 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 { CheckBox } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the react CheckBox Component.\n * ```ts\n * \n * ```\n */\nvar CheckBoxComponent = /** @class */ (function (_super) {\n __extends(CheckBoxComponent, _super);\n function CheckBoxComponent(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 CheckBoxComponent.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 CheckBoxComponent;\n}(CheckBox));\nexport { CheckBoxComponent };\napplyMixins(CheckBoxComponent, [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 { DatePicker } from '@syncfusion/ej2-calendars';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the Essential JS 2 React DatePicker Component.\n * ```ts\n * \n * ```\n */\nvar DatePickerComponent = /** @class */ (function (_super) {\n __extends(DatePickerComponent, _super);\n function DatePickerComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n DatePickerComponent.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 DatePickerComponent;\n}(DatePicker));\nexport { DatePickerComponent };\napplyMixins(DatePickerComponent, [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 { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * The DropDownList component contains a list of predefined values, from which the user can choose a single value.\n * ```\n * \n * ```\n */\nvar DropDownListComponent = /** @class */ (function (_super) {\n __extends(DropDownListComponent, _super);\n function DropDownListComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = [\"headerTemplate\", \"valueTemplate\", \"itemTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n DropDownListComponent.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 DropDownListComponent;\n}(DropDownList));\nexport { DropDownListComponent };\napplyMixins(DropDownListComponent, [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","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 * as React from 'react';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React NumericTextBox Component\n * ```html\n * \n * ```\n */\nvar NumericTextBoxComponent = /** @class */ (function (_super) {\n __extends(NumericTextBoxComponent, _super);\n function NumericTextBoxComponent(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 NumericTextBoxComponent.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 NumericTextBoxComponent;\n}(NumericTextBox));\nexport { NumericTextBoxComponent };\napplyMixins(NumericTextBoxComponent, [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})();\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 } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\nvar TEXTBOX_FOCUS = 'e-input-focus';\nvar containerAttr = ['title', 'style', 'class'];\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.isAngular = false;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.isVue = false;\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 (!this.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.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkAttributes(true);\n this.multiline && !isNullOrUndefined(this.textarea) ? Input.validateInputType(this.textboxWrapper.container, this.textarea) : Input.validateInputType(this.textboxWrapper.container, this.element);\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 this.updateCssClass(newProp.cssClass, oldProp.cssClass);\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.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\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.updateHTMLAttrToElement();\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') {\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) && containerAttr.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 = this.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.updateHTMLAttrToWrapper();\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 this.renderComplete();\n };\n TextBox.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 (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(this.htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([this.textboxWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.textboxWrapper.container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.textboxWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.textboxWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TextBox.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 (containerAttr.indexOf(key) < 0) {\n this.multiline && !isNullOrUndefined(this.textarea) ? this.textarea.setAttribute(key, this.htmlAttributes[\"\" + key]) : this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getInputValidClassList(newClass), [this.textboxWrapper.container], this.getInputValidClassList(oldClass));\n };\n TextBox.prototype.getInputValidClassList = function (inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\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 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var textboxObj = 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.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 _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 /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\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 * as React from 'react';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React TextBox Component\n * ```html\n * \n * ```\n */\nvar TextBoxComponent = /** @class */ (function (_super) {\n __extends(TextBoxComponent, _super);\n function TextBoxComponent(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 TextBoxComponent.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 TextBoxComponent;\n}(TextBox));\nexport { TextBoxComponent };\napplyMixins(TextBoxComponent, [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})();\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, closest, Collection, Complex, attributes, detach, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, select, isVisible } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Browser, formatUnit, L10n } from '@syncfusion/ej2-base';\nimport { setStyleAttribute as setStyle, isNullOrUndefined as isNOU, selectAll, addClass, removeClass, remove } from '@syncfusion/ej2-base';\nimport { EventHandler, rippleEffect, Touch, compile, Animation } from '@syncfusion/ej2-base';\nimport { getRandomId, SanitizeHtmlHelper, Draggable } from '@syncfusion/ej2-base';\nimport { Toolbar } from '../toolbar/toolbar';\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT = 'e-content';\nvar CLS_NEST = 'e-nested';\nvar CLS_ITEMS = 'e-items';\nvar CLS_ITEM = 'e-item';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_RTL = 'e-rtl';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_DISABLE = 'e-disable';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar CLS_FILL = 'e-fill-mode';\nvar TABITEMPREFIX = 'tabitem_';\nvar CLS_REORDER_ACTIVE_ITEM = 'e-reorder-active-item';\n/**\n * Objects used for configuring the Tab selecting item action properties.\n */\nvar TabActionSettings = /** @class */ (function (_super) {\n __extends(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\nexport { TabActionSettings };\n/**\n * Objects used for configuring the Tab animation properties.\n */\nvar TabAnimationSettings = /** @class */ (function (_super) {\n __extends(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\nexport { TabAnimationSettings };\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\nexport { Header };\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @class */ (function (_super) {\n __extends(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n __decorate([\n Property(true)\n ], TabItem.prototype, \"visible\", void 0);\n __decorate([\n Property()\n ], TabItem.prototype, \"id\", void 0);\n __decorate([\n Property(-1)\n ], TabItem.prototype, \"tabIndex\", void 0);\n return TabItem;\n}(ChildProperty));\nexport { TabItem };\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n *
    \n * \n * ```\n */\nvar Tab = /** @class */ (function (_super) {\n __extends(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n *\n * @param {TabModel} options - Specifies Tab model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.isInteracted = false;\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.draggableItems = [];\n _this.resizeContext = _this.refreshActiveTabBorder.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Tab.prototype.destroy = function () {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n if (!isNOU(this.tbObj)) {\n this.tbObj.destroy();\n this.tbObj = null;\n }\n this.unWireEvents();\n this.element.removeAttribute('aria-disabled');\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n this.element.classList.remove(CLS_TEMPLATE);\n if (!isNOU(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n if (this.btnCls) {\n this.btnCls = null;\n }\n this.hdrEle = null;\n this.cntEle = null;\n this.tbItems = null;\n this.tbItem = null;\n this.tbPop = null;\n this.prevItem = null;\n this.popEle = null;\n this.bdrLine = null;\n this.content = null;\n this.dragItem = null;\n this.cloneElement = null;\n this.draggingItems = [];\n if (this.draggableItems && this.draggableItems.length > 0) {\n for (var i = 0; i < this.draggableItems.length; i++) {\n this.draggableItems[i].destroy();\n this.draggableItems[i] = null;\n }\n this.draggableItems = [];\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Refresh the tab component\n *\n * @returns {void}\n */\n Tab.prototype.refresh = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.refresh.call(this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Initialize component\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwiped = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (this.allowDragAndDrop) {\n this.dragArea = !isNOU(this.dragArea) ? this.dragArea : '#' + this.element.id + ' ' + ('.' + CLS_HEADER);\n }\n if (!isNOU(nested)) {\n nested.parentElement.classList.add(CLS_NEST);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyle(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { 'aria-disabled': 'false' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.render = function () {\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.tabId = this.element.id.length > 0 ? ('-' + this.element.id) : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n this.refreshActiveBorder();\n });\n }\n };\n Tab.prototype.renderContainer = function () {\n var ele = this.element;\n this.items.forEach(function (item, index) {\n if (isNOU(item.id) && !isNOU(item.setProperties)) {\n item.setProperties({ id: TABITEMPREFIX + index.toString() }, true);\n }\n });\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE);\n var header = ele.querySelector('.' + CLS_HEADER);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNOU(select('.' + CLS_HEADER, this.element)) && !isNOU(select('.' + CLS_CONTENT, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNOU(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n this.tbItems = select('.' + CLS_HEADER + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN + ' ' + CLS_IGNORE });\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNOU(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i));\n }\n if (count > 0) {\n var tabItems_1 = this.createElement('div', { className: CLS_ITEMS });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM, id: CLS_ITEM + _this.tabId + '_' + index\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', {\n className: CLS_WRAP, innerHTML: cont,\n attrs: { role: 'tab', tabIndex: '-1', 'aria-selected': 'false', 'aria-controls': CLS_CONTENT + _this.tabId + '_' + index, 'aria-disabled': 'false' }\n });\n wrap.querySelector('.' + CLS_TEXT).appendChild(item);\n tabItems_1.appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM, tabItems_1)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n cssClass: this.cssClass\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, { role: 'tablist' });\n if (!isNOU(this.element.getAttribute('aria-label'))) {\n this.hdrEle.setAttribute('aria-label', this.element.getAttribute('aria-label'));\n this.element.removeAttribute('aria-label');\n }\n else if (!isNOU(this.element.getAttribute('aria-labelledby'))) {\n this.hdrEle.setAttribute('aria-labelledby', this.element.getAttribute('aria-labelledby'));\n this.element.removeAttribute('aria-labelledby');\n }\n this.setCloseButton(this.showCloseButton);\n var toolbarHeader = this.tbObj.element.querySelector('.' + CLS_TB_ITEMS);\n if (!isNOU(toolbarHeader)) {\n if (isNOU(toolbarHeader.id) || toolbarHeader.id === '') {\n toolbarHeader.id = this.element.id + '_' + 'tab_header_items';\n }\n }\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n addClass([contents.item(i)], CLS_ITEM);\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT + this.tabId + '_' + i;\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbItems = Array.prototype.slice.call(selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element));\n var maxId = this.lastIndex;\n if (!this.isReplace && tbItems.length > 0) {\n var idList_1 = [];\n tbItems.forEach(function (item) {\n idList_1.push(_this.getIndexFromEle(item.id));\n });\n maxId = Math.max.apply(Math, idList_1);\n }\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n var i = 0;\n items.forEach(function (item, i) {\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNOU(item.headerTemplate)) && (isNOU(item.header) || isNOU(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n if (typeof txt === 'string' && _this.enableHtmlSanitizer) {\n txt = SanitizeHtmlHelper.sanitize(txt);\n }\n var itemIndex;\n if (_this.isReplace && !isNOU(_this.tbId) && _this.tbId !== '') {\n itemIndex = parseInt(_this.tbId.substring(_this.tbId.lastIndexOf('_') + 1), 10);\n _this.tbId = '';\n }\n else {\n itemIndex = index + i;\n }\n _this.lastIndex = ((tbItems.length === 0) ? i : ((_this.isReplace) ? (itemIndex) : (maxId + 1 + i)));\n var disabled = (item.disabled) ? ' ' + CLS_DISABLE + ' ' + CLS_OVERLAY : '';\n var hidden = (item.visible === false) ? ' ' + CLS_HIDDEN : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNOU(tHtml) && tHtml !== '');\n if (!isNOU(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAttrs = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'false', 'aria-disabled': 'false' };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray === []) {\n _this.itemIndexArray.push(CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n else {\n _this.itemIndexArray.splice((index + i), 0, CLS_ITEM + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM + _this.tabId + '_' + _this.lastIndex, 'data-id': item.id\n };\n var tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = ((item.cssClass !== undefined) ? item.cssClass : ' ') + ' ' + disabled + ' ' + hidden + ' '\n + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n if (this.isIconAlone) {\n this.element.classList.add(CLS_ICON_TAB);\n }\n else {\n this.element.classList.remove(CLS_ICON_TAB);\n }\n return tItems;\n };\n Tab.prototype.removeActiveClass = function () {\n var tabHeader = this.getTabHeader();\n if (tabHeader) {\n var tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, tabHeader);\n [].slice.call(tabItems).forEach(function (node) { return node.classList.remove(CLS_ACTIVE); });\n [].slice.call(tabItems).forEach(function (node) { return node.firstElementChild.setAttribute('aria-selected', 'false'); });\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele, selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNOU(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target);\n this.actEleId = target.id;\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER, this.element);\n if (val === true) {\n trg.classList.add(CLS_CLOSE_SHOW);\n }\n else {\n trg.classList.remove(CLS_CLOSE_SHOW);\n }\n this.tbObj.refreshOverflow();\n this.refreshActiveTabBorder();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing\n };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing\n };\n }\n else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNOU(animateObj)) {\n animateObj.begin = function () {\n setStyle(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyle(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var oldCnt;\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT).children);\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n var newCnt = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(oldCnt) && !isNOU(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n if (!isNOU(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n var isPrevent = isNOU(this.animation) || this.animation.next === {} || this.animation.previous === {}\n || isNOU(this.animation.next.effect) || isNOU(this.animation.previous.effect)\n || this.animation.previous.effect == 'None' || this.animation.next.effect == 'None';\n if (this.initRender || value === false || this.animation === {} || isPrevent) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE);\n };\n if (!this.initRender && !isNOU(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNOU(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNOU(trgParent) && trgParent.classList.contains(CLS_ACTIVE) === false) {\n this.selectTab(trgIndex, null, true);\n if (!isNOU(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n if (isNOU(this.element)) {\n return undefined;\n }\n var headers = [].slice.call(this.element.children).filter(function (e) { return e.classList.contains(CLS_HEADER); });\n if (headers.length > 0) {\n return headers[0];\n }\n else {\n var wrap = [].slice.call(this.element.children).filter(function (e) { return !e.classList.contains(CLS_BLA_TEM); })[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter(function (e) { return e.classList.contains(CLS_HEADER); })[0];\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM + this.tabId + '_', '');\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNOU(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string') {\n val = val.trim();\n if (this.isVue) {\n templateFn = compile(SanitizeHtmlHelper.sanitize(val));\n }\n else {\n ele.innerHTML = SanitizeHtmlHelper.sanitize(val);\n }\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNOU(templateFn)) {\n templateFUN = templateFn({}, this, prop);\n }\n if (!isNOU(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n cnt = isNOU(cnt) ? \"\" : cnt;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST)) {\n ele = select('.' + CLS_NEST + '> .' + CLS_CONTENT + ' > #' + CLS_CONTENT + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT + this.tabId + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL, tbPos]);\n if (!this.element.classList.contains(CLS_NEST)) {\n addClass([this.element], [CLS_VTAB, tbPos]);\n }\n else {\n addClass([this.hdrEle], [CLS_VTAB, tbPos]);\n }\n }\n if (this.headerPlacement === 'Bottom') {\n addClass([this.hdrEle], [CLS_HBOTTOM]);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var activeTab = this.hdrEle.querySelector('.' + CLS_ACTIVE);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n if (!isNOU(activeTab) && activeTab.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(activeTab);\n }\n }\n this.addVerticalClass();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.focusItem = function () {\n var curActItem = select(' #' + CLS_ITEM + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNOU(curActItem)) {\n curActItem.firstElementChild.focus();\n }\n };\n Tab.prototype.changeToolbarOrientation = function () {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n };\n Tab.prototype.setOrientation = function (place, ele) {\n var headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n var contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT));\n if (place === 'Bottom' && (contentPos > headerPos)) {\n this.element.appendChild(ele);\n }\n else {\n removeClass([ele], [CLS_HBOTTOM]);\n this.element.insertBefore(ele, select('.' + CLS_CONTENT, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '') {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNOU(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyle(this.cntEle, { 'height': (this.element.clientHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyle(this.element, { 'height': '100%' });\n this.cntEle.style.height = 'calc(100% - ' + this.hdrEle.offsetHeight + 'px)';\n }\n else if (this.heightAdjustMode === 'Auto') {\n if (this.isTemplate === true) {\n var cnt = selectAll('.' + CLS_CONTENT + ' > .' + CLS_ITEM, this.element);\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT + this.tabId + '_' + 0), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + 0 }\n }));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n if (this.isReact) {\n this.clearTemplate(['content']);\n }\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n if (this.prevIndex !== this.selectedItem) {\n ele.classList.remove(CLS_ACTIVE);\n }\n }\n setStyle(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyle(this.cntEle, { 'height': 'auto' });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var trgHdrEle = this.getTabHeader();\n var trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE, trgHdrEle);\n if (isNOU(trg)) {\n return;\n }\n if (!this.reorderActiveTab) {\n if (trg.classList.contains(CLS_TB_POPUP) && !this.bdrLine.classList.contains(CLS_HIDDEN)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n if (trgHdrEle && !trgHdrEle.classList.contains(CLS_REORDER_ACTIVE_ITEM)) {\n trgHdrEle.classList.add(CLS_REORDER_ACTIVE_ITEM);\n }\n }\n else if (trgHdrEle) {\n trgHdrEle.classList.remove(CLS_REORDER_ACTIVE_ITEM);\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n var bar = select('.' + CLS_INDICATOR, trgHdrEle);\n var scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyle(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNOU(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyle(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyle(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n if (this.overflowMode === 'MultiRow') {\n var top_1 = this.headerPlacement === 'Bottom' ? trg.offsetTop : trg.offsetHeight + trg.offsetTop;\n setStyle(bar, { 'top': top_1 + 'px', 'height': '' });\n }\n else {\n setStyle(bar, { 'top': '', 'height': '' });\n }\n var tbWidth = (isNOU(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyle(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyle(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNOU(this.bdrLine) && !trg.classList.contains(CLS_TB_POPUP)) {\n this.bdrLine.classList.remove(CLS_HIDDEN);\n }\n };\n Tab.prototype.setActive = function (value, skipDataBind, isInteracted) {\n if (skipDataBind === void 0) { skipDataBind = false; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\n if (value < 0 || isNaN(value) || this.tbItem.length === 0) {\n return;\n }\n if (value >= 0 && !skipDataBind) {\n this.allowServerDataBinding = false;\n this.setProperties({ selectedItem: value }, true);\n this.allowServerDataBinding = true;\n if (!this.initRender) {\n this.serverDataBind();\n }\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n attributes(trg.firstElementChild, { 'aria-controls': CLS_CONTENT + this.tabId + '_' + value });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE);\n trg.firstElementChild.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNOU(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT + this.tabId + '_' + no;\n }\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT, this.element).children, CLS_CONTENT + this.tabId + '_' + no);\n if (!isNOU(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNOU(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM + ' ' + CLS_ACTIVE,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + this.tabId + '_' + this.extIndex(id) }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n this.refreshItemVisibility(trg);\n if (!this.initRender && !skipDataBind) {\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwiped,\n isInteracted: isInteracted,\n preventFocus: false\n };\n this.trigger('selected', eventArg, function (selectEventArgs) {\n if (!selectEventArgs.preventFocus) {\n trg.firstElementChild.focus();\n }\n });\n }\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left') ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.bindDraggable = function () {\n var _this = this;\n if (this.allowDragAndDrop) {\n var tabHeader = this.element.querySelector('.' + CLS_HEADER);\n if (tabHeader) {\n var items = Array.prototype.slice.call(tabHeader.querySelectorAll('.' + CLS_TB_ITEM));\n items.forEach(function (element) {\n _this.initializeDrag(element);\n });\n }\n }\n };\n Tab.prototype.wireEvents = function () {\n this.bindDraggable();\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNOU(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n if (!isNOU(this.keyModule)) {\n this.keyModule.destroy();\n }\n if (!isNOU(this.tabKeyModule)) {\n this.tabKeyModule.destroy();\n }\n if (!isNOU(this.cntEle) && !isNOU(this.touchModule)) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (!isNOU(trgParent) && (trgIndex !== this.selectedItem)) {\n this.selectTab(trgIndex, args.originalEvent, true);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNOU(e.originalEvent.changedTouches)) {\n return;\n }\n if (this.isNested) {\n this.element.setAttribute('data-swipe', 'true');\n }\n var nestedTab = this.element.querySelector('[data-swipe=\"true\"]');\n if (nestedTab) {\n nestedTab.removeAttribute('data-swipe');\n return;\n }\n this.isSwiped = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.selectTab(k, null, true);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.selectTab(i, null, true);\n break;\n }\n }\n }\n this.isSwiped = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n var clstHead = closest(e.target, '.' + CLS_HEADER);\n if (!isNOU(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var tabHeader = this.getTabHeader();\n var actEle = select('.' + CLS_ACTIVE, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNOU(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE) === false) {\n trg.setAttribute('tabindex', trg.getAttribute('data-tabindex'));\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n if (!isNOU(actEle) && actEle.children.item(0).getAttribute('tabindex') === '-1') {\n actEle.children.item(0).setAttribute('tabindex', '0');\n }\n break;\n case 'moveLeft':\n case 'moveRight':\n if (!isNOU(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNOU(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n if (this.showCloseButton === true && !isNOU(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNOU(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstElementChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNOU(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n scrBar.removeAttribute('tabindex');\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n };\n Tab.prototype.getIndexFromEle = function (id) {\n return parseInt(id.substring(id.lastIndexOf('_') + 1), 10);\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNOU(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var properties = Object.keys(newProp.items[index]);\n for (var j = 0; j < properties.length; j++) {\n var oldVal = Object(oldProp.items[index])[properties[j]];\n var newVal = Object(newProp.items[index])[properties[j]];\n var hdr = this.element.querySelectorAll('.' + CLS_TB_ITEM)[index];\n var itemIndex = void 0;\n if (hdr && !isNOU(hdr.id) && hdr.id !== '') {\n itemIndex = this.getIndexFromEle(hdr.id);\n }\n else {\n itemIndex = index;\n }\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM + this.tabId + '_' + itemIndex, this.element);\n var cntItem = select('.' + CLS_CONTENT + ' #' + CLS_CONTENT + this.tabId + '_' + itemIndex, this.element);\n if (properties[j] === 'header' || properties[j] === 'headerTemplate') {\n var icon = (isNOU(this.items[index].header) ||\n isNOU(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if (properties[j] === 'headerTemplate') {\n this.clearTabTemplate(hdrItem, properties[j], CLS_TB_ITEM);\n }\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n this.tbId = hdr.id;\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (properties[j] === 'content' && !isNOU(cntItem)) {\n var strVal = typeof newVal === 'string' || isNOU(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else if (this.isAngular || this.isReact) {\n this.clearTabTemplate(cntItem, properties[j], CLS_ITEM);\n cntItem.innerHTML = '';\n this.templateCompile(cntItem, newVal, index);\n }\n else if (typeof newVal !== 'function') {\n cntItem.innerHTML = newVal;\n }\n }\n if (properties[j] === 'cssClass') {\n if (!isNOU(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNOU(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (properties[j] === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n if (properties[j] === 'visible') {\n this.hideTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n }\n else {\n this.lastIndex = 0;\n if (isNOU(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT, this.element);\n while (selectElement.firstElementChild) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n this.draggableItems = [];\n this.bindDraggable();\n }\n }\n };\n Tab.prototype.clearTabTemplate = function (templateEle, templateName, className) {\n if (!this.clearTemplates) {\n return;\n }\n if (this.registeredTemplate && this.registeredTemplate[templateName]) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[templateName].length; index++) {\n var registeredItem = registeredTemplates[templateName][index].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], [registeredTemplates[templateName][index]]);\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[index];\n var closestItem = closest(portalItem.containerInfo, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\n }\n }\n };\n Tab.prototype.initializeDrag = function (target) {\n var _this = this;\n var dragObj = new Draggable(target, {\n dragArea: this.dragArea,\n dragTarget: '.' + CLS_TB_ITEM,\n clone: true,\n helper: this.helper.bind(this),\n dragStart: this.itemDragStart.bind(this),\n drag: function (e) {\n var dragIndex = _this.getEleIndex(_this.dragItem);\n var dropIndex;\n var dropItem;\n var dragArgs = {\n draggedItem: _this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: e.target.closest('.' + CLS_TB_ITEM),\n clonedElement: _this.cloneElement,\n index: dragIndex\n };\n if (!isNOU(e.target.closest('.' + CLS_TAB)) && !e.target.closest('.' + CLS_TAB).isEqualNode(_this.element) &&\n _this.dragArea !== '.' + CLS_HEADER) {\n _this.trigger('dragging', dragArgs);\n }\n else {\n if (!(e.target.closest(_this.dragArea)) && _this.overflowMode !== 'Popup') {\n document.body.style.cursor = 'not-allowed';\n addClass([_this.cloneElement], CLS_HIDDEN);\n if (_this.dragItem.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.dragItem], CLS_HIDDEN);\n }\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n }\n else {\n document.body.style.cursor = '';\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n if (_this.cloneElement.classList.contains(CLS_HIDDEN)) {\n removeClass([_this.cloneElement], CLS_HIDDEN);\n }\n }\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n var scrollRightNavEle = _this.element.querySelector('.e-scroll-right-nav');\n var scrollLeftNavEle = _this.element.querySelector('.e-scroll-left-nav');\n var hscrollBar = _this.element.querySelector('.e-hscroll-bar');\n if (!isNOU(scrollRightNavEle) && Math.abs((scrollRightNavEle.offsetWidth / 2) +\n scrollRightNavEle.offsetLeft) > _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n hscrollBar.scrollLeft -= 10;\n }\n if (!isNOU(scrollLeftNavEle) && Math.abs((scrollLeftNavEle.offsetLeft + scrollLeftNavEle.offsetWidth) -\n _this.cloneElement.offsetLeft) > (scrollLeftNavEle.offsetWidth / 2)) {\n hscrollBar.scrollLeft += 10;\n }\n }\n _this.cloneElement.style.pointerEvents = 'none';\n dropItem = closest(e.target, '.' + CLS_TB_ITEM + '.e-draggable');\n var scrollContentWidth = 0;\n if (_this.overflowMode === 'Scrollable' && !isNOU(_this.element.querySelector('.e-hscroll'))) {\n scrollContentWidth = _this.element.querySelector('.e-hscroll-content').offsetWidth;\n }\n if (dropItem != null && !dropItem.isSameNode(_this.dragItem) &&\n dropItem.closest('.' + CLS_TAB).isSameNode(_this.dragItem.closest('.' + CLS_TAB))) {\n dropIndex = _this.getEleIndex(dropItem);\n if (dropIndex < dragIndex &&\n (Math.abs((dropItem.offsetLeft + dropItem.offsetWidth) -\n _this.cloneElement.offsetLeft) > (dropItem.offsetWidth / 2))) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n if (dropIndex > dragIndex &&\n (Math.abs(dropItem.offsetWidth / 2) + dropItem.offsetLeft -\n scrollContentWidth) < _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n }\n _this.droppedIndex = _this.getEleIndex(_this.dragItem);\n _this.trigger('dragging', dragArgs);\n }\n },\n dragStop: this.itemDragStop.bind(this)\n });\n this.draggableItems.push(dragObj);\n };\n Tab.prototype.helper = function (e) {\n this.cloneElement = this.createElement('div');\n if (e.element) {\n this.cloneElement = (e.element.cloneNode(true));\n addClass([this.cloneElement], 'e-tab-clone-element');\n if (this.element.querySelector('.' + CLS_HEADER).classList.contains(CLS_CLOSE_SHOW)) {\n addClass([this.cloneElement], CLS_CLOSE_SHOW);\n }\n removeClass([this.cloneElement.querySelector('.' + CLS_WRAP)], 'e-ripple');\n if (!isNOU(this.cloneElement.querySelector('.e-ripple-element'))) {\n remove(this.cloneElement.querySelector('.e-ripple-element'));\n }\n document.body.appendChild(this.cloneElement);\n }\n return this.cloneElement;\n };\n Tab.prototype.itemDragStart = function (e) {\n var _this = this;\n this.draggingItems = this.items.map(function (x) { return x; });\n this.dragItem = e.element;\n var dragArgs = {\n draggedItem: e.element,\n event: e.event,\n target: e.target,\n droppedItem: null,\n index: this.getEleIndex(this.dragItem),\n clonedElement: this.cloneElement,\n cancel: false\n };\n this.trigger('onDragStart', dragArgs, function (tabitemDragArgs) {\n if (tabitemDragArgs.cancel) {\n var dragObj = e.element.ej2_instances[0];\n if (!isNullOrUndefined(dragObj)) {\n dragObj.intDestroy(e.event);\n }\n detach(_this.cloneElement);\n }\n else {\n _this.removeActiveClass();\n addClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n }\n });\n };\n Tab.prototype.dragAction = function (dropItem, dragsIndex, dropIndex) {\n if (this.items.length > 0) {\n var item = this.draggingItems[dragsIndex];\n this.draggingItems.splice(dragsIndex, 1);\n this.draggingItems.splice(dropIndex, 0, item);\n }\n if (this.overflowMode === 'MultiRow') {\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n if (dragsIndex > dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n if (dropItem.isSameNode(dropItem.parentElement.lastChild)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(dropItem.parentElement.lastChild, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement.lastChild), this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n var lastEle = (dropItem.parentElement).lastChild;\n if (dropItem.isSameNode(lastEle)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(lastEle, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n if (dragsIndex < dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n this.dragItem.parentElement.appendChild(dropItem.parentElement.firstElementChild);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextSibling);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n }\n };\n Tab.prototype.itemDragStop = function (e) {\n var _this = this;\n detach(this.cloneElement);\n this.cloneElement = null;\n this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n document.body.style.cursor = '';\n var dragStopArgs = {\n draggedItem: this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: this.tbItem[this.droppedIndex],\n clonedElement: null,\n index: this.droppedIndex,\n cancel: false\n };\n this.trigger('dragged', dragStopArgs, function (tabItemDropArgs) {\n if (tabItemDropArgs.cancel) {\n _this.refresh();\n }\n else {\n if (_this.items.length > 0 && _this.draggingItems.length > 0) {\n _this.items = _this.draggingItems;\n _this.selectedItem = _this.droppedIndex;\n _this.refresh();\n }\n else {\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = '';\n removeClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN);\n _this.selectTab(_this.droppedIndex, null, true);\n }\n }\n });\n this.dragItem = null;\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n *\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns {void}.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.setAttribute('tabindex', tbItems.firstElementChild.getAttribute('data-tabindex'));\n }\n else {\n tbItems.classList.add(CLS_DISABLE, CLS_OVERLAY);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE)) {\n this.select(index + 1);\n }\n }\n if (!isNOU(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.firstElementChild.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n *\n * @param {TabItemModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns {void}.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER, this.element);\n if (isNOU(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n this.bindDraggable();\n }\n else {\n var itemsCount = selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element).length;\n if (itemsCount !== 0) {\n lastEleIndex = this.lastIndex + 1;\n }\n if (isNOU(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNOU(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNOU(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n var tabItems_2 = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNOU(item.headerTemplate || item.header) || isNOU(textValue_1) ||\n (textValue_1.length === 0) && !isNOU(item.header) && isNOU(item.header.iconCss))) {\n if (tabItems_2[place]) {\n if (isNOU(item.id)) {\n item.id = CLS_ITEM + _this.tabId + '_' + TABITEMPREFIX + (lastEleIndex + place).toString();\n }\n tabItems_2[place].htmlAttributes['data-id'] = item.id;\n }\n _this.items.splice((index + i_1), 0, item);\n i_1++;\n }\n if (_this.isTemplate && !isNOU(item.header) && !isNOU(item.header.text)) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT + _this.tabId + '_' + no, className: CLS_ITEM,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM + '_' + no }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[(index + place)]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems_2, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n }\n this.bindDraggable();\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n *\n * @param {number} index - Index of target item that is going to be removed.\n * @returns {void}.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(trg)) {\n return;\n }\n var removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n var header = select('#' + CLS_ITEM + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_TB_ITEMS, _this.element));\n if (!isNOU(header)) {\n _this.clearTabTemplate(header, 'headerTemplate', CLS_TB_ITEM);\n }\n _this.tbObj.removeItems(index);\n if (_this.allowDragAndDrop && (index !== Array.prototype.indexOf.call(_this.itemIndexArray, trg.id))) {\n index = Array.prototype.indexOf.call(_this.itemIndexArray, trg.id);\n }\n var targetEleIndex = _this.itemIndexArray.indexOf(trg.id);\n _this.items.splice(targetEleIndex, 1);\n _this.itemIndexArray.splice(targetEleIndex, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT, _this.element));\n if (!isNOU(cntTrg)) {\n _this.clearTabTemplate(cntTrg, 'content', CLS_ITEM);\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (_this.draggableItems && _this.draggableItems.length > 0) {\n _this.draggableItems[index].destroy();\n _this.draggableItems[index] = null;\n _this.draggableItems.splice(index, 1);\n }\n if (trg.classList.contains(CLS_ACTIVE)) {\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.selectedItem = index;\n _this.select(index);\n }\n else if (index !== _this.selectedItem) {\n if (index < _this.selectedItem) {\n index = _this.itemIndexArray.indexOf(_this.tbItem[_this.selectedItem].id);\n _this.setProperties({ selectedItem: index > -1 ? index : _this.selectedItem }, true);\n _this.prevIndex = _this.selectedItem;\n }\n _this.tbItem = selectAll('.' + CLS_TB_ITEM, _this.getTabHeader());\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n _this.hdrEle.style.display = 'none';\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n *\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns {void}.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNOU(item)) {\n return;\n }\n if (isNOU(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN);\n if (value === true) {\n item.classList.add(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n if (!isNullOrUndefined(item.firstElementChild)) {\n item.firstElementChild.setAttribute('aria-hidden', '' + value);\n }\n if (this.overflowMode === 'Popup' && this.tbObj) {\n this.tbObj.refreshOverflow();\n }\n };\n Tab.prototype.selectTab = function (args, event, isInteracted) {\n if (event === void 0) { event = null; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.isInteracted = isInteracted;\n this.select(args, event);\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n *\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @param {Event} event - An event which takes place in DOM.\n * @returns {void}\n */\n Tab.prototype.select = function (args, event) {\n var _this = this;\n var tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNOU(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNOU(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNOU(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE)) {\n this.prevItem.children.item(0).setAttribute('tabindex', this.prevItem.firstElementChild.getAttribute('tabindex'));\n }\n var eventArg = {\n event: event,\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNOU(this.content) ?\n select('#' + CLS_CONTENT + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwiped,\n isInteracted: this.isInteracted,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args, _this.isInteracted);\n }\n });\n }\n else {\n this.selectingContent(args, this.isInteracted);\n }\n this.isInteracted = false;\n };\n Tab.prototype.selectingContent = function (args, isInteracted) {\n if (typeof args === 'number') {\n if (!isNOU(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE) ||\n this.tbItem[args].classList.contains(CLS_HIDDEN))) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false && this.items[i].visible === true) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n this.prevItem = this.tbItem[this.prevIndex];\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP) && this.reorderActiveTab) {\n this.setActive(this.popupHandler(this.tbItem[args]), null, isInteracted);\n if ((!isNOU(this.items) && this.items.length > 0) && this.allowDragAndDrop) {\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var item = this.items[args];\n this.items.splice(args, 1);\n this.items.splice(this.tbItem.length - 1, 0, item);\n var itemId = this.itemIndexArray[args];\n this.itemIndexArray.splice(args, 1);\n this.itemIndexArray.splice(this.tbItem.length - 1, 0, itemId);\n }\n }\n else {\n this.setActive(args, null, isInteracted);\n }\n }\n else {\n this.setActive(0, null, isInteracted);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args), null, isInteracted);\n }\n };\n /**\n * Gets the item index from the Tab.\n *\n * @param {string} tabItemId - Item ID is used for getting index from the Tab.\n * @returns {number} - It returns item index.\n */\n Tab.prototype.getItemIndex = function (tabItemId) {\n var tabIndex;\n for (var i = 0; i < this.tbItem.length; i++) {\n var value = this.tbItem[i].getAttribute('data-id');\n if (tabItemId === value) {\n tabIndex = i;\n break;\n }\n }\n return tabIndex;\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - It returns the persisted state.\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\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 {TabModel} newProp - It contains the new value of data.\n * @param {TabModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Tab.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\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 setStyle(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyle(this.element, { height: formatUnit(newProp.height) });\n this.setContentHeight(false);\n break;\n case 'cssClass':\n var headerEle = this.element.querySelector('.' + CLS_HEADER);\n if (oldProp.cssClass !== '' && !isNullOrUndefined(oldProp.cssClass)) {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, oldProp.cssClass, false);\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n break;\n case 'items':\n this.evalOnPropertyChangeItems(newProp, oldProp);\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'reorderActiveTab':\n this.refreshActiveTabBorder();\n break;\n case 'selectedItem':\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n break;\n case 'headerPlacement':\n this.changeOrientation(newProp.headerPlacement);\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActiveTabBorder();\n break;\n case 'heightAdjustMode':\n this.setContentHeight(false);\n this.select(this.selectedItem);\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n case 'allowDragAndDrop':\n this.bindDraggable();\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.draggableItems.forEach(function (item) {\n item.dragArea = _this.dragArea;\n });\n this.refresh();\n }\n break;\n }\n }\n };\n /**\n * To refresh the active tab contents.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTab = function () {\n if (this.isReact && this.isTemplate) {\n this.clearTemplate();\n }\n if (!this.isTemplate) {\n if (this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE)) {\n detach(this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).children[0]);\n detach(this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0]);\n var item = this.items[this.selectedItem];\n var pos = (isNOU(item.header) || isNOU(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNOU(item.header) || isNOU(item.header.iconCss)) ? '' : item.header.iconCss;\n var text = item.headerTemplate || item.header.text;\n var txtWrap = this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n if (!isNOU(text.tagName)) {\n txtWrap.appendChild(text);\n }\n else {\n this.headerTextCompile(txtWrap, text, this.selectedItem);\n }\n var tEle = void 0;\n var icon = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tConts = this.createElement('div', { className: CLS_TEXT_WRAP });\n tConts.appendChild(txtWrap);\n if ((text !== '' && text !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tConts.insertBefore(icon, tConts.firstElementChild);\n }\n else {\n tConts.appendChild(icon);\n }\n tEle = txtWrap;\n this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrap : icon);\n if (tEle === icon) {\n detach(txtWrap);\n tConts.appendChild(icon);\n this.isIconAlone = true;\n }\n }\n var tabIndex = isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAtt = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'true', 'aria-disabled': 'false' };\n tConts.appendChild(this.btnCls.cloneNode(true));\n var wraper = this.createElement('div', { className: CLS_WRAP, attrs: wrapAtt });\n wraper.appendChild(tConts);\n if (pos === 'top' || pos === 'bottom') {\n this.element.classList.add('e-vertical-icon');\n }\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wraper);\n var crElem = this.createElement('div');\n var cnt = item.content;\n var eleStr = void 0;\n if (typeof cnt === 'string' || isNOU(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n crElem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n crElem.appendChild(cnt);\n }\n if (!isNOU(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n this.element.querySelector('.' + CLS_ITEM + '.' + CLS_ACTIVE).appendChild(crElem);\n }\n }\n else {\n var tabItems = this.element.querySelector('.' + CLS_TB_ITEMS);\n var element = this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE);\n var index = this.getIndexFromEle(element.id);\n var header = element.innerText;\n var detachContent = this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).children[0];\n var mainContents = detachContent.innerHTML;\n detach(element);\n detach(detachContent);\n var attr = {\n className: CLS_TB_ITEM + ' ' + CLS_TEMPLATE + ' ' + CLS_ACTIVE, id: CLS_ITEM + this.tabId + '_' + index\n };\n var txtString = this.createElement('span', {\n className: CLS_TEXT, innerHTML: header, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var conte = this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txtString + this.btnCls.outerHTML\n }).outerHTML;\n var tabIndex = element.firstElementChild.getAttribute('data-tabindex');\n var wrap = this.createElement('div', {\n className: CLS_WRAP, innerHTML: conte,\n attrs: { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-controls': CLS_CONTENT + this.tabId + '_' + index, 'aria-selected': 'true', 'aria-disabled': 'false' }\n });\n tabItems.insertBefore(this.createElement('div', attr), tabItems.children[index + 1]);\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE).appendChild(wrap);\n var crElem = this.createElement('div', { innerHTML: mainContents });\n this.element.querySelector('.' + CLS_CONTENT).querySelector('.' + CLS_ACTIVE).appendChild(crElem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * To refresh the active tab indicator.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTabBorder = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE, this.element);\n if (!isNOU(activeEle) && this.reorderActiveTab) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n __decorate([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate([\n Property('Dynamic')\n ], Tab.prototype, \"loadOn\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"reorderActiveTab\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate([\n Property()\n ], Tab.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], Tab.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(true)\n ], Tab.prototype, \"clearTemplates\", void 0);\n __decorate([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"onDragStart\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragging\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"dragged\", void 0);\n __decorate([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\nexport { Tab };\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 { Tab } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Tab Component.\n * ```html\n * \n * ```\n */\nvar TabComponent = /** @class */ (function (_super) {\n __extends(TabComponent, _super);\n function TabComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'tabItems': 'tabItem' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n TabComponent.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 TabComponent;\n}(Tab));\nexport { TabComponent };\napplyMixins(TabComponent, [ComponentBase, React.Component]);\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/**\n * Exports a boolean value reporting whether is client side or server side by checking on the window object\n */\nconst isClient = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport default isClient;\n","/**\n * Exports a boolean value reporting whether the given API is supported or not\n */\nconst isApiSupported = (api) => (typeof window !== 'undefined' ? api in window : false);\nexport default isApiSupported;\n","const cache = new Map();\n/**\n * A tiny wrapper around console.warn that makes sure the message is only displayed once.\n * Used mainly to avoid polluting server side logs\n * @param message\n */\nconst warnOnce = (message) => {\n if (cache.has(message))\n return;\n cache.set(message, true);\n // eslint-disable-next-line no-console\n console.warn(message);\n};\nexport default warnOnce;\n","import { useEffect, useState } from 'react';\nimport isClient from './shared/isClient';\nimport isAPISupported from './shared/isAPISupported';\nimport warnOnce from './shared/warnOnce';\nconst errorMessage = 'matchMedia is not supported, this could happen both because window.matchMedia is not supported by' +\n ' your current browser or you\\'re using the useMediaQuery hook whilst server side rendering.';\n/**\n * Accepts a media query string then uses the\n * [window.matchMedia](https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia) API to determine if it\n * matches with the current document.
    \n * It also monitor the document changes to detect when it matches or stops matching the media query.
    \n * Returns the validity state of the given media query.\n *\n */\nconst useMediaQuery = (mediaQuery) => {\n if (!isClient || !isAPISupported('matchMedia')) {\n warnOnce(errorMessage);\n return false;\n }\n const [isVerified, setIsVerified] = useState(!!window.matchMedia(mediaQuery).matches);\n useEffect(() => {\n const mediaQueryList = window.matchMedia(mediaQuery);\n const documentChangeHandler = () => { setIsVerified(!!mediaQueryList.matches); };\n try {\n mediaQueryList.addEventListener('change', documentChangeHandler);\n }\n catch (e) {\n // Safari isn't supporting mediaQueryList.addEventListener\n mediaQueryList.addListener(documentChangeHandler);\n }\n documentChangeHandler();\n return () => {\n try {\n mediaQueryList.removeEventListener('change', documentChangeHandler);\n }\n catch (e) {\n // Safari isn't supporting mediaQueryList.removeEventListener\n mediaQueryList.removeListener(documentChangeHandler);\n }\n };\n }, [mediaQuery]);\n return isVerified;\n};\nexport default useMediaQuery;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\nvar pairSplitRegExp = /; */;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var pairs = str.split(pairSplitRegExp);\n var dec = opt.decode || decode;\n\n for (var i = 0; i < pairs.length; i++) {\n var pair = pairs[i];\n var eq_idx = pair.indexOf('=');\n\n // skip things that don't look like key=value\n if (eq_idx < 0) {\n continue;\n }\n\n var key = pair.substr(0, eq_idx).trim()\n var val = pair.substr(++eq_idx, pair.length).trim();\n\n // quoted values\n if ('\"' == val[0]) {\n val = val.slice(1, -1);\n }\n\n // only assign once\n if (undefined == obj[key]) {\n obj[key] = tryDecode(val, dec);\n }\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n if (isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + opt.expires.toUTCString();\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\n'use strict';\n\nvar _assign = require('object-assign');\n\n// -- Inlined from fbjs --\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction _invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nvar warning = function(){};\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\n// /-- Inlined from fbjs --\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return
    Hello World
    ;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return
    Hello, {name}!
    ;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillMount`.\n *\n * @optional\n */\n UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillReceiveProps`.\n *\n * @optional\n */\n UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Replacement for (deprecated) `componentWillUpdate`.\n *\n * @optional\n */\n UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Similar to ReactClassInterface but for static methods.\n */\n var ReactClassStaticInterface = {\n /**\n * This method is invoked after a component is instantiated and when it\n * receives new props. Return an object to update state in response to\n * prop changes. Return null to indicate no change to state.\n *\n * If an object is returned, its keys will be merged into the existing state.\n *\n * @return {object || null}\n * @optional\n */\n getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (process.env.NODE_ENV !== 'production') {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isAlreadyDefined = name in Constructor;\n if (isAlreadyDefined) {\n var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n ? ReactClassStaticInterface[name]\n : null;\n\n _invariant(\n specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n\n Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n return;\n }\n\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n 'Did you mean UNSAFE_componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n throw Error(\n 'create-react-class could not find the React object. If you are using script tags, ' +\n 'make sure that React is being loaded before create-react-class.'\n );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n React.Component,\n React.isValidElement,\n ReactNoopUpdateQueue\n);\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","var isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nexport default deepmerge_1;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","var isProduction = process.env.NODE_ENV === 'production';\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\nexport default warning;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nexport default clone;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import MapCache from './_MapCache.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nexport default memoize;\n","import memoize from './memoize.js';\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nexport default memoizeCapped;\n","import memoizeCapped from './_memoizeCapped.js';\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nexport default stringToPath;\n","import isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default toKey;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","import arrayMap from './_arrayMap.js';\nimport copyArray from './_copyArray.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\nimport stringToPath from './_stringToPath.js';\nimport toKey from './_toKey.js';\nimport toString from './toString.js';\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nexport default toPath;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","import * as React from 'react';\nimport { FormikContextType } from './types';\nimport invariant from 'tiny-warning';\n\nexport const FormikContext = React.createContext>(\n undefined as any\n);\nFormikContext.displayName = 'FormikContext';\n\nexport const FormikProvider = FormikContext.Provider;\nexport const FormikConsumer = FormikContext.Consumer;\n\nexport function useFormikContext() {\n const formik = React.useContext>(FormikContext);\n\n invariant(\n !!formik,\n `Formik context is undefined, please verify you are calling useFormikContext() as child of a component.`\n );\n\n return formik;\n}\n","import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\nimport * as React from 'react';\n\n// Assertions\n\n/** @private is the value an empty array? */\nexport const isEmptyArray = (value?: any) =>\n Array.isArray(value) && value.length === 0;\n\n/** @private is the given object a Function? */\nexport const isFunction = (obj: any): obj is Function =>\n typeof obj === 'function';\n\n/** @private is the given object an Object? */\nexport const isObject = (obj: any): obj is Object =>\n obj !== null && typeof obj === 'object';\n\n/** @private is the given object an integer? */\nexport const isInteger = (obj: any): boolean =>\n String(Math.floor(Number(obj))) === obj;\n\n/** @private is the given object a string? */\nexport const isString = (obj: any): obj is string =>\n Object.prototype.toString.call(obj) === '[object String]';\n\n/** @private is the given object a NaN? */\n// eslint-disable-next-line no-self-compare\nexport const isNaN = (obj: any): boolean => obj !== obj;\n\n/** @private Does a React component have exactly 0 children? */\nexport const isEmptyChildren = (children: any): boolean =>\n React.Children.count(children) === 0;\n\n/** @private is the given object/value a promise? */\nexport const isPromise = (value: any): value is PromiseLike =>\n isObject(value) && isFunction(value.then);\n\n/** @private is the given object/value a type of synthetic event? */\nexport const isInputEvent = (value: any): value is React.SyntheticEvent =>\n value && isObject(value) && isObject(value.target);\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?Document} doc Defaults to current document.\n * @return {Element | null}\n * @see https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/dom/getActiveElement.js\n */\nexport function getActiveElement(doc?: Document): Element | null {\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(\n obj: any,\n key: string | string[],\n def?: any,\n p: number = 0\n) {\n const path = toPath(key);\n while (obj && p < path.length) {\n obj = obj[path[p++]];\n }\n\n // check if path is not in the end\n if (p !== path.length && !obj) {\n return def;\n }\n\n return obj === undefined ? def : obj;\n}\n\n/**\n * Deeply set a value from in object via it's path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n let res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n let pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n let currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] =\n isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n\n/**\n * Recursively a set the same value for all keys and arrays nested object, cloning\n * @param object\n * @param value\n * @param visited\n * @param response\n */\nexport function setNestedObjectValues(\n object: any,\n value: any,\n visited: any = new WeakMap(),\n response: any = {}\n): T {\n for (let k of Object.keys(object)) {\n const val = object[k];\n if (isObject(val)) {\n if (!visited.get(val)) {\n visited.set(val, true);\n // In order to keep array values consistent for both dot path and\n // bracket syntax, we need to check if this is an array so that\n // this will output { friends: [true] } and not { friends: { \"0\": true } }\n response[k] = Array.isArray(val) ? [] : {};\n setNestedObjectValues(val, value, visited, response[k]);\n }\n } else {\n response[k] = value;\n }\n }\n\n return response;\n}\n","import deepmerge from 'deepmerge';\nimport isPlainObject from 'lodash/isPlainObject';\nimport * as React from 'react';\nimport isEqual from 'react-fast-compare';\nimport invariant from 'tiny-warning';\nimport { FieldConfig } from './Field';\nimport { FormikProvider } from './FormikContext';\nimport {\n FieldHelperProps,\n FieldInputProps,\n FieldMetaProps,\n FormikConfig,\n FormikErrors,\n FormikHandlers,\n FormikHelpers,\n FormikProps,\n FormikState,\n FormikTouched,\n FormikValues,\n} from './types';\nimport {\n getActiveElement,\n getIn,\n isEmptyChildren,\n isFunction,\n isObject,\n isPromise,\n isString,\n setIn,\n setNestedObjectValues,\n} from './utils';\n\ntype FormikMessage =\n | { type: 'SUBMIT_ATTEMPT' }\n | { type: 'SUBMIT_FAILURE' }\n | { type: 'SUBMIT_SUCCESS' }\n | { type: 'SET_ISVALIDATING'; payload: boolean }\n | { type: 'SET_ISSUBMITTING'; payload: boolean }\n | { type: 'SET_VALUES'; payload: Values }\n | { type: 'SET_FIELD_VALUE'; payload: { field: string; value?: any } }\n | { type: 'SET_FIELD_TOUCHED'; payload: { field: string; value?: boolean } }\n | { type: 'SET_FIELD_ERROR'; payload: { field: string; value?: string } }\n | { type: 'SET_TOUCHED'; payload: FormikTouched }\n | { type: 'SET_ERRORS'; payload: FormikErrors }\n | { type: 'SET_STATUS'; payload: any }\n | {\n type: 'SET_FORMIK_STATE';\n payload: (s: FormikState) => FormikState;\n }\n | {\n type: 'RESET_FORM';\n payload: FormikState;\n };\n\n// State reducer\nfunction formikReducer(\n state: FormikState,\n msg: FormikMessage\n) {\n switch (msg.type) {\n case 'SET_VALUES':\n return { ...state, values: msg.payload };\n case 'SET_TOUCHED':\n return { ...state, touched: msg.payload };\n case 'SET_ERRORS':\n if (isEqual(state.errors, msg.payload)) {\n return state;\n }\n\n return { ...state, errors: msg.payload };\n case 'SET_STATUS':\n return { ...state, status: msg.payload };\n case 'SET_ISSUBMITTING':\n return { ...state, isSubmitting: msg.payload };\n case 'SET_ISVALIDATING':\n return { ...state, isValidating: msg.payload };\n case 'SET_FIELD_VALUE':\n return {\n ...state,\n values: setIn(state.values, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_TOUCHED':\n return {\n ...state,\n touched: setIn(state.touched, msg.payload.field, msg.payload.value),\n };\n case 'SET_FIELD_ERROR':\n return {\n ...state,\n errors: setIn(state.errors, msg.payload.field, msg.payload.value),\n };\n case 'RESET_FORM':\n return { ...state, ...msg.payload };\n case 'SET_FORMIK_STATE':\n return msg.payload(state);\n case 'SUBMIT_ATTEMPT':\n return {\n ...state,\n touched: setNestedObjectValues>(\n state.values,\n true\n ),\n isSubmitting: true,\n submitCount: state.submitCount + 1,\n };\n case 'SUBMIT_FAILURE':\n return {\n ...state,\n isSubmitting: false,\n };\n case 'SUBMIT_SUCCESS':\n return {\n ...state,\n isSubmitting: false,\n };\n default:\n return state;\n }\n}\n\n// Initial empty states // objects\nconst emptyErrors: FormikErrors = {};\nconst emptyTouched: FormikTouched = {};\n\n// This is an object that contains a map of all registered fields\n// and their validate functions\ninterface FieldRegistry {\n [field: string]: {\n validate: (value: any) => string | Promise | undefined;\n };\n}\n\nexport function useFormik({\n validateOnChange = true,\n validateOnBlur = true,\n validateOnMount = false,\n isInitialValid,\n enableReinitialize = false,\n onSubmit,\n ...rest\n}: FormikConfig) {\n const props = {\n validateOnChange,\n validateOnBlur,\n validateOnMount,\n onSubmit,\n ...rest,\n };\n const initialValues = React.useRef(props.initialValues);\n const initialErrors = React.useRef(props.initialErrors || emptyErrors);\n const initialTouched = React.useRef(props.initialTouched || emptyTouched);\n const initialStatus = React.useRef(props.initialStatus);\n const isMounted = React.useRef(false);\n const fieldRegistry = React.useRef({});\n if (__DEV__) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n invariant(\n typeof isInitialValid === 'undefined',\n 'isInitialValid has been deprecated and will be removed in future versions of Formik. Please use initialErrors or validateOnMount instead.'\n );\n // eslint-disable-next-line\n }, []);\n }\n\n React.useEffect(() => {\n isMounted.current = true;\n\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n const [, setIteration] = React.useState(0);\n const stateRef = React.useRef>({\n values: props.initialValues,\n errors: props.initialErrors || emptyErrors,\n touched: props.initialTouched || emptyTouched,\n status: props.initialStatus,\n isSubmitting: false,\n isValidating: false,\n submitCount: 0,\n });\n\n const state = stateRef.current;\n\n const dispatch = React.useCallback((action: FormikMessage) => {\n const prev = stateRef.current;\n\n stateRef.current = formikReducer(prev, action);\n\n // force rerender\n if (prev !== stateRef.current) setIteration(x => x + 1);\n }, []);\n\n const runValidateHandler = React.useCallback(\n (values: Values, field?: string): Promise> => {\n return new Promise((resolve, reject) => {\n const maybePromisedErrors = (props.validate as any)(values, field);\n if (maybePromisedErrors == null) {\n // use loose null check here on purpose\n resolve(emptyErrors);\n } else if (isPromise(maybePromisedErrors)) {\n (maybePromisedErrors as Promise).then(\n errors => {\n resolve(errors || emptyErrors);\n },\n actualException => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in `,\n actualException\n );\n }\n\n reject(actualException);\n }\n );\n } else {\n resolve(maybePromisedErrors);\n }\n });\n },\n [props.validate]\n );\n\n /**\n * Run validation against a Yup schema and optionally run a function if successful\n */\n const runValidationSchema = React.useCallback(\n (values: Values, field?: string): Promise> => {\n const validationSchema = props.validationSchema;\n const schema = isFunction(validationSchema)\n ? validationSchema(field)\n : validationSchema;\n const promise =\n field && schema.validateAt\n ? schema.validateAt(field, values)\n : validateYupSchema(values, schema);\n return new Promise((resolve, reject) => {\n promise.then(\n () => {\n resolve(emptyErrors);\n },\n (err: any) => {\n // Yup will throw a validation error if validation fails. We catch those and\n // resolve them into Formik errors. We can sniff if something is a Yup error\n // by checking error.name.\n // @see https://github.com/jquense/yup#validationerrorerrors-string--arraystring-value-any-path-string\n if (err.name === 'ValidationError') {\n resolve(yupToFormErrors(err));\n } else {\n // We throw any other errors\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Warning: An unhandled error was caught during validation in `,\n err\n );\n }\n\n reject(err);\n }\n }\n );\n });\n },\n [props.validationSchema]\n );\n\n const runSingleFieldLevelValidation = React.useCallback(\n (field: string, value: void | string): Promise => {\n return new Promise(resolve =>\n resolve(fieldRegistry.current[field].validate(value) as string)\n );\n },\n []\n );\n\n const runFieldLevelValidations = React.useCallback(\n (values: Values): Promise> => {\n const fieldKeysWithValidation: string[] = Object.keys(\n fieldRegistry.current\n ).filter(f => isFunction(fieldRegistry.current[f].validate));\n\n // Construct an array with all of the field validation functions\n const fieldValidations: Promise[] =\n fieldKeysWithValidation.length > 0\n ? fieldKeysWithValidation.map(f =>\n runSingleFieldLevelValidation(f, getIn(values, f))\n )\n : [Promise.resolve('DO_NOT_DELETE_YOU_WILL_BE_FIRED')]; // use special case ;)\n\n return Promise.all(fieldValidations).then((fieldErrorsList: string[]) =>\n fieldErrorsList.reduce((prev, curr, index) => {\n if (curr === 'DO_NOT_DELETE_YOU_WILL_BE_FIRED') {\n return prev;\n }\n if (curr) {\n prev = setIn(prev, fieldKeysWithValidation[index], curr);\n }\n return prev;\n }, {})\n );\n },\n [runSingleFieldLevelValidation]\n );\n\n // Run all validations and return the result\n const runAllValidations = React.useCallback(\n (values: Values) => {\n return Promise.all([\n runFieldLevelValidations(values),\n props.validationSchema ? runValidationSchema(values) : {},\n props.validate ? runValidateHandler(values) : {},\n ]).then(([fieldErrors, schemaErrors, validateErrors]) => {\n const combinedErrors = deepmerge.all>(\n [fieldErrors, schemaErrors, validateErrors],\n { arrayMerge }\n );\n return combinedErrors;\n });\n },\n [\n props.validate,\n props.validationSchema,\n runFieldLevelValidations,\n runValidateHandler,\n runValidationSchema,\n ]\n );\n\n // Run all validations methods and update state accordingly\n const validateFormWithHighPriority = useEventCallback(\n (values: Values = state.values) => {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runAllValidations(values).then(combinedErrors => {\n if (!!isMounted.current) {\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n dispatch({ type: 'SET_ERRORS', payload: combinedErrors });\n }\n return combinedErrors;\n });\n }\n );\n\n React.useEffect(() => {\n if (\n validateOnMount &&\n isMounted.current === true &&\n isEqual(initialValues.current, props.initialValues)\n ) {\n validateFormWithHighPriority(initialValues.current);\n }\n }, [validateOnMount, validateFormWithHighPriority]);\n\n const resetForm = React.useCallback(\n (nextState?: Partial>) => {\n const values =\n nextState && nextState.values\n ? nextState.values\n : initialValues.current;\n const errors =\n nextState && nextState.errors\n ? nextState.errors\n : initialErrors.current\n ? initialErrors.current\n : props.initialErrors || {};\n const touched =\n nextState && nextState.touched\n ? nextState.touched\n : initialTouched.current\n ? initialTouched.current\n : props.initialTouched || {};\n const status =\n nextState && nextState.status\n ? nextState.status\n : initialStatus.current\n ? initialStatus.current\n : props.initialStatus;\n initialValues.current = values;\n initialErrors.current = errors;\n initialTouched.current = touched;\n initialStatus.current = status;\n\n const dispatchFn = () => {\n dispatch({\n type: 'RESET_FORM',\n payload: {\n isSubmitting: !!nextState && !!nextState.isSubmitting,\n errors,\n touched,\n status,\n values,\n isValidating: !!nextState && !!nextState.isValidating,\n submitCount:\n !!nextState &&\n !!nextState.submitCount &&\n typeof nextState.submitCount === 'number'\n ? nextState.submitCount\n : 0,\n },\n });\n };\n\n if (props.onReset) {\n const maybePromisedOnReset = (props.onReset as any)(\n state.values,\n imperativeMethods\n );\n\n if (isPromise(maybePromisedOnReset)) {\n (maybePromisedOnReset as Promise).then(dispatchFn);\n } else {\n dispatchFn();\n }\n } else {\n dispatchFn();\n }\n },\n [props.initialErrors, props.initialStatus, props.initialTouched, props.onReset]\n );\n\n React.useEffect(() => {\n if (\n isMounted.current === true &&\n !isEqual(initialValues.current, props.initialValues)\n ) {\n if (enableReinitialize) {\n initialValues.current = props.initialValues;\n resetForm();\n if (validateOnMount) {\n validateFormWithHighPriority(initialValues.current);\n }\n }\n }\n }, [\n enableReinitialize,\n props.initialValues,\n resetForm,\n validateOnMount,\n validateFormWithHighPriority,\n ]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialErrors.current, props.initialErrors)\n ) {\n initialErrors.current = props.initialErrors || emptyErrors;\n dispatch({\n type: 'SET_ERRORS',\n payload: props.initialErrors || emptyErrors,\n });\n }\n }, [enableReinitialize, props.initialErrors]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialTouched.current, props.initialTouched)\n ) {\n initialTouched.current = props.initialTouched || emptyTouched;\n dispatch({\n type: 'SET_TOUCHED',\n payload: props.initialTouched || emptyTouched,\n });\n }\n }, [enableReinitialize, props.initialTouched]);\n\n React.useEffect(() => {\n if (\n enableReinitialize &&\n isMounted.current === true &&\n !isEqual(initialStatus.current, props.initialStatus)\n ) {\n initialStatus.current = props.initialStatus;\n dispatch({\n type: 'SET_STATUS',\n payload: props.initialStatus,\n });\n }\n }, [enableReinitialize, props.initialStatus, props.initialTouched]);\n\n const validateField = useEventCallback((name: string) => {\n // This will efficiently validate a single field by avoiding state\n // changes if the validation function is synchronous. It's different from\n // what is called when using validateForm.\n\n if (\n fieldRegistry.current[name] &&\n isFunction(fieldRegistry.current[name].validate)\n ) {\n const value = getIn(state.values, name);\n const maybePromise = fieldRegistry.current[name].validate(value);\n if (isPromise(maybePromise)) {\n // Only flip isValidating if the function is async.\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return maybePromise\n .then((x: any) => x)\n .then((error: string) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: error },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n } else {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: {\n field: name,\n value: maybePromise as string | undefined,\n },\n });\n return Promise.resolve(maybePromise as string | undefined);\n }\n } else if (props.validationSchema) {\n dispatch({ type: 'SET_ISVALIDATING', payload: true });\n return runValidationSchema(state.values, name)\n .then((x: any) => x)\n .then((error: any) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field: name, value: getIn(error, name) },\n });\n dispatch({ type: 'SET_ISVALIDATING', payload: false });\n });\n }\n\n return Promise.resolve();\n });\n\n const registerField = React.useCallback((name: string, { validate }: any) => {\n fieldRegistry.current[name] = {\n validate,\n };\n }, []);\n\n const unregisterField = React.useCallback((name: string) => {\n delete fieldRegistry.current[name];\n }, []);\n\n const setTouched = useEventCallback(\n (touched: FormikTouched, shouldValidate?: boolean) => {\n dispatch({ type: 'SET_TOUCHED', payload: touched });\n const willValidate =\n shouldValidate === undefined ? validateOnBlur : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(state.values)\n : Promise.resolve();\n }\n );\n\n const setErrors = React.useCallback((errors: FormikErrors) => {\n dispatch({ type: 'SET_ERRORS', payload: errors });\n }, []);\n\n const setValues = useEventCallback(\n (values: React.SetStateAction, shouldValidate?: boolean) => {\n const resolvedValues = isFunction(values) ? values(state.values) : values;\n\n dispatch({ type: 'SET_VALUES', payload: resolvedValues });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(resolvedValues)\n : Promise.resolve();\n }\n );\n\n const setFieldError = React.useCallback(\n (field: string, value: string | undefined) => {\n dispatch({\n type: 'SET_FIELD_ERROR',\n payload: { field, value },\n });\n },\n []\n );\n\n const setFieldValue = useEventCallback(\n (field: string, value: any, shouldValidate?: boolean) => {\n dispatch({\n type: 'SET_FIELD_VALUE',\n payload: {\n field,\n value,\n },\n });\n const willValidate =\n shouldValidate === undefined ? validateOnChange : shouldValidate;\n return willValidate\n ? validateFormWithHighPriority(setIn(state.values, field, value))\n : Promise.resolve();\n }\n );\n\n const executeChange = React.useCallback(\n (eventOrTextValue: string | React.ChangeEvent, maybePath?: string) => {\n // By default, assume that the first argument is a string. This allows us to use\n // handleChange with React Native and React Native Web's onChangeText prop which\n // provides just the value of the input.\n let field = maybePath;\n let val = eventOrTextValue;\n let parsed;\n // If the first argument is not a string though, it has to be a synthetic React Event (or a fake one),\n // so we handle like we would a normal HTML change event.\n if (!isString(eventOrTextValue)) {\n // If we can, persist the event\n // @see https://reactjs.org/docs/events.html#event-pooling\n if ((eventOrTextValue as any).persist) {\n (eventOrTextValue as React.ChangeEvent).persist();\n }\n const target = eventOrTextValue.target\n ? (eventOrTextValue as React.ChangeEvent).target\n : (eventOrTextValue as React.ChangeEvent).currentTarget;\n\n const {\n type,\n name,\n id,\n value,\n checked,\n outerHTML,\n options,\n multiple,\n } = target;\n\n field = maybePath ? maybePath : name ? name : id;\n if (!field && __DEV__) {\n warnAboutMissingIdentifier({\n htmlContent: outerHTML,\n documentationAnchorLink: 'handlechange-e-reactchangeeventany--void',\n handlerName: 'handleChange',\n });\n }\n val = /number|range/.test(type)\n ? ((parsed = parseFloat(value)), isNaN(parsed) ? '' : parsed)\n : /checkbox/.test(type) // checkboxes\n ? getValueForCheckbox(getIn(state.values, field!), checked, value)\n : options && multiple // \" +\n\t\t\t\"\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\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}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\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\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\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}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\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}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\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\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\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};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\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}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"