{"version":3,"file":"static/js/main.8ae4cc47.js","mappings":"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AO,uBACP,IAAO,uBACP,IAAO,uBACP,IAAO,IACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,gBACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,OACP,IAAO,eACP,IAAO,MACP,IAAO,IACP,IAAO,UACP,IAAO,OACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,UACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,SACP,IAAO,IACP,IAAO,OACP,IAAO,2BACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,SACP,IAAO,KACP,IAAO,OACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,qBACP,IAAO,KACP,IAAO,SACP,IAAO,MACP,IAAO,qBACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,eACP,IAAO,OACP,IAAO,IACP,IAAO,UACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,SACP,IAAO,gBACP,IAAO,UACP,IAAO,sBACP,IAAO,qBACP,IAAO,SACP,IAAO,KACP,IAAO,SACP,IAAO,qBACP,IAAO,SACP,IAAO,QClWX,SAAWvC,GACP,IAAIwC,EAAiB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAC7G,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO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,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,SACA,YACA,mBACA,WACA,UACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,UACA,eACA,cACA,cACA,UACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,YACA,cACA,cACA,aACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,eACA,UACA,oBAEAC,GAAoC,WACpC,SAASA,KA2ET,OAzEAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACPC,KAAMP,GACNtnB,WAAYunB,MAIxBG,EAAmBI,SAAW,SAAU5jG,GACpC,IAAI+b,EAAO5lB,KAAKstG,iBAEhB,OADattG,KAAK0tG,eAAe9nF,EAAM/b,IAG3CwjG,EAAmBK,eAAiB,SAAU9nF,EAAM/b,GAChD7J,KAAKktG,YAActnF,EAAK2nF,UAAU5nB,WAClC3lF,KAAKitG,WAAarnF,EAAK2nF,UAAUC,KACjCxtG,KAAK2tG,YAAcl4E,SAASC,cAAc,OAC1C11B,KAAK2tG,YAAYzxE,UAAYryB,EAC7B7J,KAAK4tG,gBACL5tG,KAAK6tG,iBACL7tG,KAAK8tG,iBACL,IAAIC,EAAe/tG,KAAK2tG,YAAYzxE,UAEpC,OADAl8B,KAAKguG,gBACED,GAEXV,EAAmBW,cAAgB,WAG/B,IADA,IAAIC,EAAQjuG,KAAK2tG,YAAYnyE,SACpB9jB,EAAI,EAAGA,EAAIu2F,EAAM33G,OAAQohB,IAE9B,IADA,IAAIy1F,EAAYc,EAAMv2F,GAAGiuE,WAChBttF,EAAI,EAAGA,EAAI80G,EAAU72G,OAAQ+B,IAClC2H,KAAK2tG,YAAYnyE,SAAS9jB,GAAGkf,gBAAgBu2E,EAAU90G,GAAG61G,YAItEb,EAAmBO,cAAgB,WAC/B,IAAI/nB,EAAW7lF,KAAK2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AAK,OACL,KAAM,OACN,KAAM,OACN,KAAM,OACN,KAAM,OACN,SAAY,OACZ,gBAAmB,OACnB,YAAe,OACf,mBAAsB,OACtB,MAAS,OACT,SAAY,QAMhBlH,EAASmH,cAAgB,CACrB,KAAM,WACN,KAAM,aACN,KAAM,cACN,SAAY,WACZ,WAAc,aACd,SAAY,eAMhBnH,EAASoH,gBAAkB,CACvB,KAAM,WACN,KAAM,aACN,KAAM,WACN,SAAY,WACZ,WAAc,aACd,SAAY,YAEhBpH,EAAS4S,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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","sources":["../node_modules/@babel/runtime/regenerator/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/moment/moment.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.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/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/regenerator-runtime/runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/node module decorator","../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/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/child-property.js","../node_modules/@syncfusion/ej2-base/src/validate-lic.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","config.ts","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../../packages/react-router/lib/context.ts","../../packages/react-router/lib/router.ts","../../packages/react-router/lib/hooks.tsx","../../packages/react-router/lib/components.tsx","../../packages/react-router-dom/index.tsx","components/not-found/notFoundScreen.tsx","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","utils/hooks.js","../node_modules/react-loader-spinner/dist/esm/loader/Audio.js","../node_modules/react-loader-spinner/dist/esm/loader/Oval.js","../node_modules/react-loader-spinner/dist/esm/loader/ThreeDots.js","../node_modules/@syncfusion/ej2-buttons/src/common/common.js","../node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.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/check-box/checkbox.component.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","../node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","../node_modules/@syncfusion/ej2-react-calendars/src/datepicker/datepicker.component.js","../node_modules/@syncfusion/ej2-calendars/src/maskbase/masked-date-time.js","../node_modules/@syncfusion/ej2-lists/src/common/list-base.js","../node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/@syncfusion/ej2-data/src/query.js","../node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","../node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","../node_modules/@syncfusion/ej2-react-calendars/src/datetimepicker/datetimepicker.component.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.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-react-dropdowns/src/drop-down-list/dropdownlist.component.js","../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/float-label.js","../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/multi-select.js","../node_modules/@syncfusion/ej2-react-dropdowns/src/multi-select/multiselect.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-inputs/src/numerictextbox/numerictextbox.js","../node_modules/@syncfusion/ej2-react-inputs/src/numerictextbox/numerictextbox.component.js","../node_modules/react-google-recaptcha/lib/esm/recaptcha.js","../node_modules/react-async-script/lib/esm/async-script-loader.js","../node_modules/react-google-recaptcha/lib/esm/recaptcha-wrapper.js","../node_modules/react-google-recaptcha/lib/esm/index.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","utils/api-client.tsx","components/success-message/successMessage.tsx","components/inquiry-form/inquiryForm.tsx","components/inquiry/inquiry.tsx","index.js"],"sourcesContent":["module.exports = require(\"regenerator-runtime\");\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","//! moment.js\n//! version : 2.29.3\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\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 basicIsoRegex =\n /^\\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 tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.3';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\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'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\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'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function q(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new q(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new q(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new q(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new q(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new q(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new q(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new q(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new q(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new q(a,5,!1,a.toLowerCase(),null,!1,!1)});var pa=/[\\-:]([a-z])/g;function qa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(pa,\nqa);z[b]=new q(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(pa,qa);z[b]=new q(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(pa,qa);z[b]=new q(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new q(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new q(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new q(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ra(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{La=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ka(a):\"\"}\nfunction Na(a){switch(a.tag){case 5:return Ka(a.type);case 16:return Ka(\"Lazy\");case 13:return Ka(\"Suspense\");case 19:return Ka(\"SuspenseList\");case 0:case 2:case 15:return a=Ma(a.type,!1),a;case 11:return a=Ma(a.type.render,!1),a;case 1:return a=Ma(a.type,!0),a;default:return\"\"}}\nfunction Oa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case va:return\"Fragment\";case ua:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ca:return\"Suspense\";case Da:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Aa:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Ba:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ea:return b=a.displayName||null,null!==b?b:Oa(a.type)||\"Memo\";case Fa:b=a._payload;a=a._init;try{return Oa(a(b))}catch(c){}}return null}\nfunction Pa(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Oa(b);case 8:return b===wa?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Qa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ra(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Sa(a){var b=Ra(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Ta(a){a._valueTracker||(a._valueTracker=Sa(a))}function Ua(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ra(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Va(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Wa(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Xa(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Qa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Ya(a,b){b=b.checked;null!=b&&ra(a,\"checked\",b,!1)}\nfunction Za(a,b){Ya(a,b);var c=Qa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?$a(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&$a(a,b.type,Qa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction ab(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction $a(a,b,c){if(\"number\"!==b||Va(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var bb=Array.isArray;\nfunction cb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=jb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction lb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar mb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},nb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(mb).forEach(function(a){nb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);mb[b]=mb[a]})});function ob(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||mb.hasOwnProperty(a)&&mb[a]?(\"\"+b).trim():b+\"px\"}\nfunction pb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ob(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var qb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction rb(a,b){if(b){if(qb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction sb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var tb=null;function ub(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var vb=null,wb=null,xb=null;\nfunction yb(a){if(a=zb(a)){if(\"function\"!==typeof vb)throw Error(p(280));var b=a.stateNode;b&&(b=Ab(b),vb(a.stateNode,a.type,b))}}function Bb(a){wb?xb?xb.push(a):xb=[a]:wb=a}function Cb(){if(wb){var a=wb,b=xb;xb=wb=null;yb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(mc(a)/nc|0)|0}var oc=64,pc=4194304;\nfunction qc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function rc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=qc(h):(f&=g,0!==f&&(d=qc(f)))}else g=c&~e,0!==g?d=qc(g):0!==f&&(d=qc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}function wc(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-lc(b);a[b]=c}\nfunction xc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=Xd),$d=String.fromCharCode(32),ae=!1;\nfunction be(a,b){switch(a){case \"keyup\":return-1!==Vd.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function ce(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var de=!1;function ee(a,b){switch(a){case \"compositionend\":return ce(b);case \"keypress\":if(32!==b.which)return null;ae=!0;return $d;case \"textInput\":return a=b.data,a===$d&&ae?null:a;default:return null}}\nfunction fe(a,b){if(de)return\"compositionend\"===a||!Wd&&be(a,b)?(a=id(),hd=gd=fd=null,de=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ee(c)}}function Ge(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Ge(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction He(){for(var a=window,b=Va();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Va(a.document)}return b}function Ie(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Je(a){var b=He(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Ge(c.ownerDocument.documentElement,c)){if(null!==d&&Ie(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Fe(c,f);var g=Fe(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Le=null,Me=null,Ne=null,Oe=!1;\nfunction Pe(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Oe||null==Le||Le!==Va(d)||(d=Le,\"selectionStart\"in d&&Ie(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Ne&&De(Ne,d)||(Ne=d,d=je(Me,\"onSelect\"),0Nf||(a.current=Mf[Nf],Mf[Nf]=null,Nf--)}function H(a,b){Nf++;Mf[Nf]=a.current;a.current=b}var Pf={},I=Of(Pf),Qf=Of(!1),Rf=Pf;function Sf(a,b){var c=a.type.contextTypes;if(!c)return Pf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Tf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Uf(){G(Qf);G(I)}function Vf(a,b,c){if(I.current!==Pf)throw Error(p(168));H(I,b);H(Qf,c)}function Wf(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Pa(a)||\"Unknown\",e));return A({},c,d)}\nfunction Xf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Pf;Rf=I.current;H(I,a);H(Qf,Qf.current);return!0}function Yf(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=Wf(a,b,Rf),d.__reactInternalMemoizedMergedChildContext=a,G(Qf),G(I),H(I,a)):G(Qf);H(Qf,c)}var Zf=null,$f=!1,ag=!1;function bg(a){null===Zf?Zf=[a]:Zf.push(a)}function cg(a){$f=!0;bg(a)}\nfunction dg(){if(!ag&&null!==Zf){ag=!0;var a=0,b=E;try{var c=Zf;for(E=1;a>=g;e-=g;Rg=1<<32-lc(b)+e|c<r?(x=m,m=null):x=m.sibling;var t=u(e,m,h[r],k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,r);null===n?l=t:n.sibling=t;n=t;m=x}if(r===h.length)return c(e,m),N&&Tg(e,r),l;if(null===m){for(;rr?(x=n,n=null):x=n.sibling;var v=u(e,n,t.value,k);if(null===v){null===n&&(n=x);break}a&&n&&null===v.alternate&&b(e,n);g=f(v,g,r);null===m?l=v:m.sibling=v;m=v;n=x}if(t.done)return c(e,\nn),N&&Tg(e,r),l;if(null===n){for(;!t.done;r++,t=h.next())t=w(e,t.value,k),null!==t&&(g=f(t,g,r),null===m?l=t:m.sibling=t,m=t);N&&Tg(e,r);return l}for(n=d(e,n);!t.done;r++,t=h.next())t=y(n,e,r,t.value,k),null!==t&&(a&&null!==t.alternate&&n.delete(null===t.key?r:t.key),g=f(t,g,r),null===m?l=t:m.sibling=t,m=t);a&&n.forEach(function(a){return b(e,a)});N&&Tg(e,r);return l}function C(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===va&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case ta:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===va){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Fa&&kh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=ih(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===va?(d=qh(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=oh(f.type,f.key,f.props,null,a.mode,h),h.ref=ih(a,d,f),h.return=a,a=h)}return g(a);case ua:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=ph(f,a.mode,h);d.return=a;a=d}return g(a);case Fa:return l=f._init,C(a,d,l(f._payload),h)}if(bb(f))return n(a,d,f,h);if(Ia(f))return v(a,d,f,h);jh(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=nh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return C}var rh=lh(!0),sh=lh(!1),th={},uh=Of(th),vh=Of(th),wh=Of(th);function xh(a){if(a===th)throw Error(p(174));return a}function yh(a,b){H(wh,b);H(vh,a);H(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:ib(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=ib(b,a)}G(uh);H(uh,b)}function zh(){G(uh);G(vh);G(wh)}\nfunction Ah(a){xh(wh.current);var b=xh(uh.current);var c=ib(b,a.type);b!==c&&(H(vh,a),H(uh,c))}function Bh(a){vh.current===a&&(G(uh),G(vh))}var P=Of(0);\nfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Dh=[];\nfunction Eh(){for(var a=0;ac?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{E=c,Gh.transition=d}}function ti(){return Uh().memoizedState}function ui(a,b,c){var d=Dg(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};vi(a)?wi(b,c):(xi(a,b,c),c=M(),a=Eg(a,d,c),null!==a&&yi(a,b,d))}\nfunction gi(a,b,c){var d=Dg(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(vi(a))wi(b,e);else{xi(a,b,e);var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(Ce(h,g))return}catch(k){}finally{}c=M();a=Eg(a,d,c);null!==a&&yi(a,b,d)}}function vi(a){var b=a.alternate;return a===Q||null!==b&&b===Q}\nfunction wi(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function xi(a,b,c){null!==J&&0!==(a.mode&1)&&0===(K&2)?(a=b.interleaved,null===a?(c.next=c,null===qg?qg=[b]:qg.push(b)):(c.next=a.next,a.next=c),b.interleaved=c):(a=b.pending,null===a?c.next=c:(c.next=a.next,a.next=c),b.pending=c)}function yi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;yc(a,c)}}\nvar Rh={readContext:pg,useCallback:U,useContext:U,useEffect:U,useImperativeHandle:U,useInsertionEffect:U,useLayoutEffect:U,useMemo:U,useReducer:U,useRef:U,useState:U,useDebugValue:U,useDeferredValue:U,useTransition:U,useMutableSource:U,useSyncExternalStore:U,useId:U,unstable_isNewReconciler:!1},Oh={readContext:pg,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:pg,useEffect:ki,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ii(4194308,\n4,ni.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ii(4194308,4,a,b)},useInsertionEffect:function(a,b){return ii(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=ui.bind(null,Q,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:fi,useDebugValue:pi,useDeferredValue:function(a){var b=fi(a),c=b[0],d=b[1];ki(function(){var b=Gh.transition;Gh.transition={};try{d(a)}finally{Gh.transition=b}},[a]);return c},useTransition:function(){var a=fi(!1),b=a[0];a=si.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=Q,e=Th();if(N){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===J)throw Error(p(349));\n0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;ki(ai.bind(null,d,f,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=J.identifierPrefix;if(N){var c=Sg;var d=Rg;c=(d&~(1<<32-lc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):\n(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[If]=b;a[Jf]=d;Li(a,b,!1,!1);b.stateNode=a;a:{g=sb(c,d);switch(c){case \"dialog\":F(\"cancel\",a);F(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":F(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eTi&&(b.flags|=128,d=!0,Pi(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,\nnull!==c&&(b.updateQueue=c,b.flags|=4),Pi(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!N)return V(b),null}else 2*D()-f.renderingStartTime>Ti&&1073741824!==c&&(b.flags|=128,d=!0,Pi(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=b,f.tail=b.sibling,f.renderingStartTime=D(),b.sibling=null,c=P.current,H(P,d?c&1|2:c&1),b;V(b);return null;case 22:case 23:return Ui(),d=null!==\nb.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(Vi&1073741824)&&(V(b),b.subtreeFlags&6&&(b.flags|=8192)):V(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}var Wi=sa.ReactCurrentOwner,og=!1;function Xi(a,b,c,d){b.child=null===a?sh(b,null,c,d):rh(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ng(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!og)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);N&&c&&Vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=oh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:De;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=mh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a&&De(a.memoizedProps,d)&&a.ref===b.ref)if(og=!1,0!==(a.lanes&e))0!==(a.flags&131072)&&(og=!0);else return b.lanes=a.lanes,Zi(a,b,e);return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null},H(ej,Vi),Vi|=c;else if(0!==(c&1073741824))b.memoizedState={baseLanes:0,cachePool:null},d=null!==f?f.baseLanes:c,H(ej,Vi),Vi|=d;else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null},b.updateQueue=null,H(ej,Vi),Vi|=a,null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):\nd=c,H(ej,Vi),Vi|=d;Xi(a,b,e,c);return b.child}function fj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Tf(c)?Rf:I.current;f=Sf(b,f);ng(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!og)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);N&&d&&Vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction gj(a,b,c,d,e){if(Tf(c)){var f=!0;Xf(b)}else f=!1;ng(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Hg(b,c,d),Jg(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=pg(l):(l=Tf(c)?Rf:I.current,l=Sf(b,l));var m=c.getDerivedStateFromProps,w=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;w||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ig(b,g,d,l);rg=!1;var u=b.memoizedState;g.state=u;yg(b,d,g,e);k=b.memoizedState;h!==d||u!==k||Qf.current||rg?(\"function\"===typeof m&&(Cg(b,c,m,d),k=b.memoizedState),(h=rg||Gg(b,c,h,d,u,k,l))?(w||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4194308)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;tg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:fg(b.type,h);g.props=l;w=b.pendingProps;u=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=pg(k):(k=Tf(c)?Rf:I.current,k=Sf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===\ntypeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==w||u!==k)&&Ig(b,g,d,k);rg=!1;u=b.memoizedState;g.state=u;yg(b,d,g,e);var n=b.memoizedState;h!==w||u!==n||Qf.current||rg?(\"function\"===typeof y&&(Cg(b,c,y,d),n=b.memoizedState),(l=rg||Gg(b,c,l,d,u,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&\ng.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&u===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&u===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=\nk,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&u===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&u===a.memoizedState||(b.flags|=1024),d=!1)}return hj(a,b,c,d,f,e)}\nfunction hj(a,b,c,d,e,f){fj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&Yf(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=rh(b,a.child,null,f),b.child=rh(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&Yf(b,c,!0);return b.child}function ij(a){var b=a.stateNode;b.pendingContext?Vf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Vf(a,b.context,!1);yh(a,b.containerInfo)}\nfunction jj(a,b,c,d,e){gh();hh(e);b.flags|=256;Xi(a,b,c,d);return b.child}var kj={dehydrated:null,treeContext:null,retryLane:0};function lj(a){return{baseLanes:a,cachePool:null}}\nfunction mj(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;H(P,e&1);if(null===a){dh(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;e=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,e={mode:\"hidden\",children:e},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ne):f=nj(e,d,0,null),a=qh(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=lj(c),b.memoizedState=kj,a):oj(b,e)}e=a.memoizedState;if(null!==e){h=e.dehydrated;if(null!==h){if(g){if(b.flags&256)return b.flags&=-257,pj(a,b,c,Error(p(422)));if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=nj({mode:\"visible\",children:d.children},e,0,null);f=qh(f,e,c,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&rh(b,a.child,\nnull,c);b.child.memoizedState=lj(c);b.memoizedState=kj;return f}if(0===(b.mode&1))b=pj(a,b,c,null);else if(\"$!\"===h.data)b=pj(a,b,c,Error(p(419)));else if(d=0!==(c&a.childLanes),og||d){d=J;if(null!==d){switch(c&-c){case 4:f=2;break;case 16:f=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:f=32;break;case 536870912:f=\n268435456;break;default:f=0}d=0!==(f&(d.suspendedLanes|c))?0:f;0!==d&&d!==e.retryLane&&(e.retryLane=d,Eg(a,d,-1))}Si();b=pj(a,b,c,Error(p(421)))}else\"$?\"===h.data?(b.flags|=128,b.child=a.child,b=qj.bind(null,a),h._reactRetry=b,b=null):(c=e.treeContext,Yg=Ff(h.nextSibling),Xg=b,N=!0,Zg=null,null!==c&&(Og[Pg++]=Rg,Og[Pg++]=Sg,Og[Pg++]=Qg,Rg=c.id,Sg=c.overflow,Qg=b),b=oj(b,b.pendingProps.children),b.flags|=4096);return b}if(f)return d=rj(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,\nf.memoizedState=null===e?lj(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kj,d;c=sj(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=rj(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?lj(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kj,d;c=sj(a,b,d.children,c);b.memoizedState=null;return c}\nfunction oj(a,b){b=nj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){var e=a.child;a=e.sibling;c=mh(e,{mode:\"visible\",children:c});0===(b.mode&1)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(d=b.deletions,null===d?(b.deletions=[a],b.flags|=16):d.push(a));return b.child=c}\nfunction rj(a,b,c,d,e){var f=b.mode;a=a.child;var g=a.sibling,h={mode:\"hidden\",children:c};0===(f&1)&&b.child!==a?(c=b.child,c.childLanes=0,c.pendingProps=h,b.deletions=null):(c=mh(a,h),c.subtreeFlags=a.subtreeFlags&14680064);null!==g?d=mh(g,d):(d=qh(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function pj(a,b,c,d){null!==d&&hh(d);rh(b,a.child,null,c);a=oj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction tj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);mg(a.return,b,c)}function uj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction vj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&tj(a,c,b);else if(19===a.tag)tj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}H(P,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);uj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}uj(b,!0,c,null,f);break;case \"together\":uj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);zg|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=mh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=mh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction wj(a,b,c){switch(b.tag){case 3:ij(b);gh();break;case 5:Ah(b);break;case 1:Tf(b.type)&&Xf(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;H(gg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return H(P,P.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return mj(a,b,c);H(P,P.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}H(P,P.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return vj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);H(P,P.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}\nfunction xj(a,b){Wg(b);switch(b.tag){case 1:return Tf(b.type)&&Uf(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),G(Qf),G(I),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:G(P);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));gh()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return G(P),null;case 4:return zh(),null;case 10:return lg(b.type._context),null;case 22:case 23:return Ui(),\nnull;case 24:return null;default:return null}}var yj=!1,zj=!1,Aj=\"function\"===typeof WeakSet?WeakSet:Set,X=null;function Bj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){Cj(a,b,d)}else c.current=null}function Dj(a,b,c){try{c()}catch(d){Cj(a,b,d)}}var Ej=!1;\nfunction Fj(a,b){a=He();if(Ie(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(O){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,w=a,u=null;b:for(;;){for(var y;;){w!==c||0!==e&&3!==w.nodeType||(h=g+e);w!==f||0!==d&&3!==w.nodeType||(k=g+d);3===w.nodeType&&(g+=w.nodeValue.length);\nif(null===(y=w.firstChild))break;u=w;w=y}for(;;){if(w===a)break b;u===c&&++l===e&&(h=g);u===f&&++m===d&&(k=g);if(null!==(y=w.nextSibling))break;w=u;u=w.parentNode}w=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;xf={focusedElem:a,selectionRange:c};for(X=b;null!==X;)if(b=X,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,X=a;else for(;null!==X;){b=X;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;case 1:if(null!==\nn){var v=n.memoizedProps,C=n.memoizedState,t=b.stateNode,r=t.getSnapshotBeforeUpdate(b.elementType===b.type?v:fg(b.type,v),C);t.__reactInternalSnapshotBeforeUpdate=r}break;case 3:var x=b.stateNode.containerInfo;if(1===x.nodeType)x.textContent=\"\";else if(9===x.nodeType){var B=x.body;null!=B&&(B.textContent=\"\")}break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(O){Cj(b,b.return,O)}a=b.sibling;if(null!==a){a.return=b.return;X=a;break}X=b.return}n=Ej;Ej=!1;return n}\nfunction Gj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Dj(b,c,f)}e=e.next}while(e!==d)}}function Hj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Ij(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Jj(a,b,c){if(ic&&\"function\"===typeof ic.onCommitFiberUnmount)try{ic.onCommitFiberUnmount(hc,b)}catch(g){}switch(b.tag){case 0:case 11:case 14:case 15:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a=a.next;do{var e=d,f=e.destroy;e=e.tag;void 0!==f&&(0!==(e&2)?Dj(b,c,f):0!==(e&4)&&Dj(b,c,f));d=d.next}while(d!==a)}break;case 1:Bj(b,c);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(g){Cj(b,\nc,g)}break;case 5:Bj(b,c);break;case 4:Kj(a,b,c)}}function Lj(a){var b=a.alternate;null!==b&&(a.alternate=null,Lj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[If],delete b[Jf],delete b[jf],delete b[Kf],delete b[Lf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Mj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Nj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Mj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Oj(a){a:{for(var b=a.return;null!==b;){if(Mj(b))break a;b=b.return}throw Error(p(160));}var c=b;switch(c.tag){case 5:b=c.stateNode;c.flags&32&&(lb(b,\"\"),c.flags&=-33);c=Nj(a);Pj(a,c,b);break;case 3:case 4:b=c.stateNode.containerInfo;c=Nj(a);Qj(a,c,b);break;default:throw Error(p(161));}}\nfunction Qj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=wf));else if(4!==d&&(a=a.child,null!==a))for(Qj(a,b,c),a=a.sibling;null!==a;)Qj(a,b,c),a=a.sibling}\nfunction Pj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Pj(a,b,c),a=a.sibling;null!==a;)Pj(a,b,c),a=a.sibling}\nfunction Kj(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(p(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=a,k=d,l=c,m=k;;)if(Jj(h,m,l),null!==m.child&&4!==m.tag)m.child.return=m,m=m.child;else{if(m===k)break a;for(;null===m.sibling;){if(null===m.return||m.return===k)break a;m=m.return}m.sibling.return=m.return;m=m.sibling}g?(h=\nf,k=d.stateNode,8===h.nodeType?h.parentNode.removeChild(k):h.removeChild(k)):f.removeChild(d.stateNode)}else if(18===d.tag)g?(h=f,k=d.stateNode,8===h.nodeType?Ef(h.parentNode,k):1===h.nodeType&&Ef(h,k),Yc(h)):Ef(f,d.stateNode);else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Jj(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&\n(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Rj(a,b){switch(b.tag){case 0:case 11:case 14:case 15:Gj(3,b,b.return);Hj(3,b);Gj(5,b,b.return);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Ya(c,d);sb(a,e);b=sb(a,d);for(e=0;ee&&(e=g);d&=~f}d=e;d=D()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bk(d/1960))-d;if(10a?16:a;if(null===lk)var d=!1;else{a=lk;lk=null;mk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(X=a.current;null!==X;){var f=X,g=f.child;if(0!==(X.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kD()-Vj?Ak(a,0):hk|=c);tk(a,b)}function Ok(a,b){0===b&&(0===(a.mode&1)?b=1:(b=pc,pc<<=1,0===(pc&130023424)&&(pc=4194304)));var c=M();a=rk(a,b);null!==a&&(wc(a,b,c),tk(a,c))}function qj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Ok(a,c)}\nfunction Tj(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Ok(a,c)}var Lk;\nLk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Qf.current)og=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return og=!1,wj(a,b,c);og=0!==(a.flags&131072)?!0:!1}else og=!1,N&&0!==(b.flags&1048576)&&Ug(b,Ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;var e=Sf(b,I.current);ng(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?\n(b.tag=1,b.memoizedState=null,b.updateQueue=null,Tf(d)?(f=!0,Xf(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,sg(b),e.updater=Fg,b.stateNode=e,e._reactInternals=b,Jg(b,d,a,c),b=hj(null,b,d,!0,f,c)):(b.tag=0,N&&f&&Vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Pk(d);a=fg(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=gj(null,b,\nd,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,fg(d.type,a),c);break a}throw Error(p(306,d,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:fg(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:fg(d,e),gj(a,b,d,e,c);case 3:a:{ij(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;tg(a,b);yg(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,\ncache:g.cache,transitions:g.transitions},b.updateQueue.baseState=f,b.memoizedState=f,b.flags&256){e=Error(p(423));b=jj(a,b,d,c,e);break a}else if(d!==e){e=Error(p(424));b=jj(a,b,d,c,e);break a}else for(Yg=Ff(b.stateNode.containerInfo.firstChild),Xg=b,N=!0,Zg=null,c=sh(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{gh();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&dh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,\nyf(d,e)?g=null:null!==f&&yf(d,f)&&(b.flags|=32),fj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&dh(b),null;case 13:return mj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=rh(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:fg(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=\nb.type._context;e=b.pendingProps;f=b.memoizedProps;g=e.value;H(gg,d._currentValue);d._currentValue=g;if(null!==f)if(Ce(f.value,g)){if(f.children===e.children&&!Qf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ug(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=\nc;k=f.alternate;null!==k&&(k.lanes|=c);mg(f.return,c,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);mg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,\nng(b,c),e=pg(e),d=d(e),b.flags|=1,Xi(a,b,d,c),b.child;case 14:return d=b.type,e=fg(d,b.pendingProps),e=fg(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:fg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Tf(d)?(a=!0,Xf(b)):a=!1,ng(b,c),Hg(b,d,e),Jg(b,d,e,c),hj(null,b,d,!0,a,c);case 19:return vj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function vk(a,b){return Yb(a,b)}\nfunction Qk(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function ah(a,b,c,d){return new Qk(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Pk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Ba)return 11;if(a===Ea)return 14}return 2}\nfunction mh(a,b){var c=a.alternate;null===c?(c=ah(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction oh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case va:return qh(c.children,e,f,b);case wa:g=8;e|=8;break;case xa:return a=ah(12,c,b,e|2),a.elementType=xa,a.lanes=f,a;case Ca:return a=ah(13,c,b,e),a.elementType=Ca,a.lanes=f,a;case Da:return a=ah(19,c,b,e),a.elementType=Da,a.lanes=f,a;case Ga:return nj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case Aa:g=9;break a;case Ba:g=11;\nbreak a;case Ea:g=14;break a;case Fa:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=ah(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function qh(a,b,c,d){a=ah(7,a,d,b);a.lanes=c;return a}function nj(a,b,c,d){a=ah(22,a,d,b);a.elementType=Ga;a.lanes=c;a.stateNode={};return a}function nh(a,b,c){a=ah(6,a,null,b);a.lanes=c;return a}\nfunction ph(a,b,c){b=ah(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction Rk(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=vc(0);this.expirationTimes=vc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=vc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function Sk(a,b,c,d,e,f,g,h,k){a=new Rk(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=ah(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null};sg(f);return a}function Tk(a,b,c){var d=3 result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\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[i]];\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[i];\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 */\nexport var containerObject = 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 result[key] = extend([], clone, copy, deep);\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[l]);\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[i].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[i];\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 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[i] + '|';\n }\n else {\n ret += val[i];\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 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[i] > 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);\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) {\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);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\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 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 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) {\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 return value + '';\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 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[i];\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 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 parseRegex = /^([^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[i].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[i].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[index];\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';\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 // 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 = /(^[ncpae]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.currencyFormatRegex = /(^[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 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[i];\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[x] + 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 _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 * 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 = window.browserDetails;\n if ('undefined' === typeof browserDetails[key]) {\n return browserDetails[key] = regX.test(Browser.userAgent);\n }\n if (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n return browserDetails[key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[i],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[i], debounceListener);\n }\n else {\n element.addEventListener(event[i], 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[j] && 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[j], 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[i].name, copyData[i].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 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 for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\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[i].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[j].indexOf('#') > -1) {\n if (!list[j].match(/\\[.*\\]/)) {\n var splitId = list[j].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[j].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[j] = setId.join('.');\n }\n }\n }\n }\n idList[i] = 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[i];\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[i].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[i], 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[i], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[i], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[i], 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[i]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[i], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[i], 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 (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\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 }\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 * 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[i];\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.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 { 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[i]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[i]];\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","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\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];\n/**\n * License validation module\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.version = '20.1';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' Please include a valid license to permanently remove this license validation message.' +\n ' You can also obtain a free 30 day evaluation license to temporarily remove this message ' +\n 'during the evaluation period. Please refer to this help topic for more information.',\n trailExpired: 'Your Syncfusion trial license has expired. Please refer to this ' +\n 'help topic for more information.',\n versionMismatched: 'The included Syncfusion license (v##LicenseVersion) is invalid for version ' +\n '##Requireversion. Please refer to this help topic for more information.',\n platformMismatched: 'The included Syncfusion license is invalid (Platform mismatch). Please refer' +\n ' to this help topic for more information.',\n invalidKey: 'The included Syncfusion license is invalid. Please refer to this ' +\n 'help topic for more information.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n function set(key) { licKey = key; }\n function get() { return licKey; }\n return {\n setKey: set,\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 if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n if (this.manager && this.manager.getKey()) {\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 validateMsg = this.errors.noLicense;\n }\n if (validateMsg && !isNullOrUndefined(document)) {\n var errorDiv = createElement('div', {\n innerHTML: validateMsg +\n '' +\n '' +\n '',\n styles: 'position:fixed;top:0;left:0;right:0;font-family:\"Segoe UI\";font-size:16px;' +\n 'background:repeating-linear-gradient(45deg,#d70f0f,#d70f0f 10px,#e12121 10px,#e12121 17px);' +\n 'color:#ffffff;z-index:999999999;text-align:center;padding:10px 50px 10px 25px;'\n });\n errorDiv.setAttribute('id', 'js-licensing');\n document.body.appendChild(errorDiv);\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\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 LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = this.manager.getKey();\n var licKeySplit = licKey.split(';');\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 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 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[k] >> 16));\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();\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 * @param {string} key - license key\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\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 { 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 } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\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 validateLicense();\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 }\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 * 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 window.addEventListener('unload', this.setPersistData.bind(this));\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 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[i]) === -1) {\n this.prototype.injectedModules.push(moduleList[i]);\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 //tslint:disable-next-line\n Component.prototype.renderReactTemplates = function () {\n //No Code\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 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 /* tslint:disable no-any */\n _this.eleTop = 0;\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, 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.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, 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[i]))) {\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.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, 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.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 if (isChangeTouch) {\n evt.preventDefault();\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 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 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.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, 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.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, 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.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.dragArea) {\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 ? this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\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 draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\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 /* 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 var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll) {\n this.helperElement.scrollIntoView();\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n Draggable.prototype.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.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, 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 ? 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[i];\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 top = elementArea.top;\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 if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1) {\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 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.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.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 _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} 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 var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n 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 }\\n \";\n var fnCode = \"var str=\\\"\" + evalExpResult + \"\\\";\" + condtion + \" return str;\";\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\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 = '\"+' + 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) ? 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","/* Dev Ops Configurations*/\r\nvar config = {\r\n url: \"https://account.fleetonstreet.com/api/inquiry\",\r\n rk: \"6Lciut0aAAAAAMN9ZUvDSZS2wzMQyWZ5lOAkHNlK\",\r\n syncfusionK: \"ORg4AjUWIQA/Gnt2VVhhQlFaclhJXGFWfVJpTGpQdk5xdV9DaVZUTWY/P1ZhSXxRdkFhUX9WcXRUQ2JaV0E=\",\r\n}\r\n\r\n/* Local Configurations*/\r\n// var config = {\r\n// url: \"https://dev-account.fleetonstreet.com/api/inquiry\",\r\n// rk: \"6LdBtt0aAAAAAGtS37APwSR1UGIRd_S06XwL_tjh\",\r\n// syncfusionK:\r\n// \"ORg4AjUWIQA/Gnt2VVhhQlFaclhJXGFWfVJpTGpQdk5xdV9DaVZUTWY/P1ZhSXxRdkFhUX9WcXRUQ2JaV0E=\",\r\n// }\r\n\r\nexport default config\r\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import * as React from \"react\";\nimport type { History, Location } from \"history\";\nimport { Action as NavigationType } from \"history\";\n\nimport type { RouteMatch } from \"./router\";\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport type Navigator = Pick;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n","import type { Location, Path, To } from \"history\";\nimport { parsePath } from \"history\";\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nexport function warning(cond: any, message: string): void {\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 React Router!\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\nconst alreadyWarned: Record = {};\nexport function warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\ntype ParamParseFailed = { failed: true };\n\ntype ParamParseSegment =\n // Check here if there exists a forward slash in the string.\n Segment extends `${infer LeftSegment}/${infer RightSegment}`\n ? // If there is a forward slash, then attempt to parse each side of the\n // forward slash.\n ParamParseSegment extends infer LeftResult\n ? ParamParseSegment extends infer RightResult\n ? LeftResult extends string\n ? // If the left side is successfully parsed as a param, then check if\n // the right side can be successfully parsed as well. If both sides\n // can be parsed, then the result is a union of the two sides\n // (read: \"foo\" | \"bar\").\n RightResult extends string\n ? LeftResult | RightResult\n : LeftResult\n : // If the left side is not successfully parsed as a param, then check\n // if only the right side can be successfully parse as a param. If it\n // can, then the result is just right, else it's a failure.\n RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If the left side didn't parse into a param, then just check the right\n // side.\n ParamParseSegment extends infer RightResult\n ? RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If there's no forward slash, then check if this segment starts with a\n // colon. If it does, then this is a dynamic segment, so the result is\n // just the remainder of the string. Otherwise, it's a failure.\n Segment extends `:${infer Remaining}`\n ? Remaining\n : ParamParseFailed;\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 ParamParseSegment extends string\n ? ParamParseSegment\n : string;\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 route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, (_) =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch {\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: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial | string,\n basename = \"/\"\n): RouteMatch[] | 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(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObject;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\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 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({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\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 branch: RouteBranch,\n pathname: string\n): RouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\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 params: matchedParams,\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 * 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/docs/en/v6/api#matchpath\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 {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, match a word boundary or a proceeding /. The word boundary restricts\n // parent routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n // Additionally, allow paths starting with `.`, `-`, `~`, and url-encoded entities,\n // but do not consume the character in the matched path so they can match against\n // nested paths.\n \"(?:(?=[.~-]|%[0-9A-F]{2})|\\\\b|\\\\/|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\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 * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\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\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\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 let from: string;\n if (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 value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\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\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 let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n","import * as React from \"react\";\nimport type { Location, Path, To } from \"history\";\nimport { Action as NavigationType, parsePath } from \"history\";\n\nimport { LocationContext, NavigationContext, RouteContext } from \"./context\";\nimport type {\n ParamParseKey,\n Params,\n PathMatch,\n PathPattern,\n RouteMatch,\n RouteObject,\n} from \"./router\";\nimport {\n getToPathname,\n invariant,\n joinPaths,\n matchPath,\n matchRoutes,\n resolveTo,\n warning,\n warningOnce,\n} from \"./router\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usehref\n */\nexport function useHref(to: To): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/api#uselocation\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/docs/en/v6/api#usematch\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname\n );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/api#useoutletcontext\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useoutlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useparams\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useroutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n \n );\n }, null as React.ReactElement | null);\n}\n","import * as React from \"react\";\nimport type { InitialEntry, Location, MemoryHistory, To } from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath,\n} from \"history\";\n\nimport { LocationContext, NavigationContext, Navigator } from \"./context\";\nimport {\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\nimport type { RouteMatch, RouteObject } from \"./router\";\nimport { invariant, normalizePathname, stripBasename, warning } from \"./router\";\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n ` may be used only in the context of a component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n ` must not be used on the initial render in a . ` +\n `This is a no-op, but you should modify your code so the is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactNode | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A is only ever to be used as the child of element, ` +\n `never rendered directly. Please wrap your in a .`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a directly. Instead, you'll render a\n * router that is more specific to your environment such as a \n * in web browsers or a for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a inside another .` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n ` is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n \n \n \n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial | string;\n}\n\n/**\n * A container for a nested tree of elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `` element or an array of them. Used internally by\n * `` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a component. All component children of must be a or `\n );\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type { BrowserHistory, HashHistory, History } from \"history\";\nimport { createBrowserHistory, createHashHistory } from \"history\";\nimport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n resolvePath,\n renderMatches,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n} from \"react-router\";\nimport type { To } from \"react-router\";\n\nfunction warning(cond: boolean, message: string): void {\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 React Router!\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\n////////////////////////////////////////////////////////////////////////////////\n// RE-EXPORTS\n////////////////////////////////////////////////////////////////////////////////\n\n// Note: Keep in sync with react-router exports!\nexport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n renderMatches,\n resolvePath,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n};\n\nexport { NavigationType } from \"react-router\";\nexport type {\n Hash,\n Location,\n Path,\n To,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigator,\n OutletProps,\n Params,\n PathMatch,\n RouteMatch,\n RouteObject,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n Pathname,\n Search,\n RoutesProps,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from \"react-router\";\n\n////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport interface LinkProps\n extends Omit, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nexport const Link = React.forwardRef(\n function LinkWithRef(\n { onClick, reloadDocument, replace = false, state, target, to, ...rest },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, { replace, state, target });\n function handleClick(\n event: React.MouseEvent\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n \n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: { isActive: boolean }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: { isActive: boolean }) => React.CSSProperties);\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let location = useLocation();\n let path = useResolvedPath(to);\n\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp({ isActive }) : styleProp;\n\n return (\n \n {typeof children === \"function\" ? children({ isActive }) : children}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `` components. This is useful if\n * you need to create custom `` components with the same click behavior we\n * use in our exported ``.\n */\nexport function useLinkClickHandler(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n } = {}\n): (event: React.MouseEvent) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n\n return React.useCallback(\n (event: React.MouseEvent) => {\n if (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular will do a replace instead of\n // a push, so do the same here.\n let replace =\n !!replaceProp || createPath(location) === createPath(path);\n\n navigate(to, { replace, state });\n }\n },\n [location, navigate, path, replaceProp, state, target, to]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(defaultInit?: URLSearchParamsInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (\n nextInit: URLSearchParamsInit,\n navigateOptions?: { replace?: boolean; state?: any }\n ) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n },\n [navigate]\n );\n\n return [searchParams, setSearchParams] as const;\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n","import React from \"react\";\r\n\r\ninterface NotFoundScreenProps {\r\n title: string,\r\n message: string,\r\n isEmbeded: boolean\r\n}\r\n\r\nconst NotFoundScreen = ({ title, message, isEmbeded } : NotFoundScreenProps) => {\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

{title}

\r\n

{message}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default NotFoundScreen\r\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}","import * as React from 'react'\r\n\r\nfunction useSafeDispatch(dispatch) {\r\n const mounted = React.useRef(false)\r\n React.useLayoutEffect(() => {\r\n mounted.current = true\r\n return () => (mounted.current = false)\r\n }, [])\r\n return React.useCallback(\r\n (...args) => (mounted.current ? dispatch(...args) : void 0),\r\n [dispatch],\r\n )\r\n}\r\n\r\nconst defaultInitialState = {status: 'idle', data: null, error: null}\r\nfunction useAsync(initialState) {\r\n const initialStateRef = React.useRef({\r\n ...defaultInitialState,\r\n ...initialState,\r\n })\r\n const [{status, data, error}, setState] = React.useReducer(\r\n (s, a) => ({...s, ...a}),\r\n initialStateRef.current,\r\n )\r\n\r\n const safeSetState = useSafeDispatch(setState)\r\n\r\n const setData = React.useCallback(\r\n data => safeSetState({data, status: 'resolved'}),\r\n [safeSetState],\r\n )\r\n const setError = React.useCallback(\r\n error => safeSetState({error, status: 'rejected'}),\r\n [safeSetState],\r\n )\r\n const reset = React.useCallback(\r\n () => safeSetState(initialStateRef.current),\r\n [safeSetState],\r\n )\r\n\r\n const run = React.useCallback(\r\n promise => {\r\n if (!promise || !promise.then) {\r\n throw new Error(\r\n `The argument passed to useAsync().run must be a promise. Maybe a function that's passed isn't returning anything?`,\r\n )\r\n }\r\n safeSetState({status: 'pending'})\r\n return promise.then(\r\n data => {\r\n setData(data)\r\n return data\r\n },\r\n error => {\r\n setError(error)\r\n return Promise.reject(error)\r\n },\r\n )\r\n },\r\n [safeSetState, setData, setError],\r\n )\r\n\r\n return {\r\n // using the same names that react-query uses for convenience\r\n isIdle: status === 'idle',\r\n isLoading: status === 'pending',\r\n isError: status === 'rejected',\r\n isSuccess: status === 'resolved',\r\n\r\n setData,\r\n setError,\r\n error,\r\n status,\r\n data,\r\n run,\r\n reset,\r\n }\r\n}\r\n\r\nexport {useAsync}","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 React from 'react';\nvar getDefaultStyle = function (visible) { return ({\n display: visible ? 'flex' : 'none'\n}); };\nvar Audio = function (_a) {\n var _b = _a.height, height = _b === void 0 ? '100' : _b, _c = _a.width, width = _c === void 0 ? '100' : _c, _d = _a.color, color = _d === void 0 ? 'blue' : _d, _e = _a.ariaLabel, ariaLabel = _e === void 0 ? 'audio-loading' : _e, _f = _a.wrapperStyle, wrapperStyle = _f === void 0 ? {} : _f, wrapperClass = _a.wrapperClass, _g = _a.visible, visible = _g === void 0 ? true : _g;\n return (React.createElement(\"div\", { style: __assign(__assign({}, getDefaultStyle(visible)), wrapperStyle), className: wrapperClass, \"data-testid\": \"audio-loading\" },\n React.createElement(\"svg\", { height: \"\".concat(height), width: \"\".concat(width), fill: color, viewBox: \"0 0 55 80\", xmlns: \"http://www.w3.org/2000/svg\", \"aria-label\": ariaLabel, \"data-testid\": \"audio-svg\" },\n React.createElement(\"g\", { transform: \"matrix(1 0 0 -1 0 80)\" },\n React.createElement(\"rect\", { width: \"10\", height: \"20\", rx: \"3\" },\n React.createElement(\"animate\", { attributeName: \"height\", begin: \"0s\", dur: \"4.3s\", values: \"20;45;57;80;64;32;66;45;64;23;66;13;64;56;34;34;2;23;76;79;20\", calcMode: \"linear\", repeatCount: \"indefinite\" })),\n React.createElement(\"rect\", { x: \"15\", width: \"10\", height: \"80\", rx: \"3\" },\n React.createElement(\"animate\", { attributeName: \"height\", begin: \"0s\", dur: \"2s\", values: \"80;55;33;5;75;23;73;33;12;14;60;80\", calcMode: \"linear\", repeatCount: \"indefinite\" })),\n React.createElement(\"rect\", { x: \"30\", width: \"10\", height: \"50\", rx: \"3\" },\n React.createElement(\"animate\", { attributeName: \"height\", begin: \"0s\", dur: \"1.4s\", values: \"50;34;78;23;56;23;34;76;80;54;21;50\", calcMode: \"linear\", repeatCount: \"indefinite\" })),\n React.createElement(\"rect\", { x: \"45\", width: \"10\", height: \"30\", rx: \"3\" },\n React.createElement(\"animate\", { attributeName: \"height\", begin: \"0s\", dur: \"2s\", values: \"30;45;13;80;56;72;45;76;34;23;67;30\", calcMode: \"linear\", repeatCount: \"indefinite\" }))))));\n};\nexport default Audio;\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 React from 'react';\nvar getDefaultStyle = function (visible) { return ({\n display: visible ? 'flex' : 'none',\n}); };\nvar RADIUS = 20;\nvar getPath = function (radius) {\n return ['M' + radius + ' 0c0-9.94-8.06', radius, radius, radius].join('-');\n};\nvar getViewBoxSize = function (strokeWidth, secondaryStrokeWidth, radius) {\n var maxStrokeWidth = Math.max(strokeWidth, secondaryStrokeWidth);\n var startingPoint = -radius - (maxStrokeWidth / 2) + 1;\n var endpoint = (radius * 2) + maxStrokeWidth;\n return [startingPoint, startingPoint, endpoint, endpoint].join(' ');\n};\nvar Oval = function (_a) {\n var _b = _a.height, height = _b === void 0 ? 80 : _b, _c = _a.width, width = _c === void 0 ? 80 : _c, _d = _a.color, color = _d === void 0 ? 'green' : _d, _e = _a.secondaryColor, secondaryColor = _e === void 0 ? 'green' : _e, _f = _a.ariaLabel, ariaLabel = _f === void 0 ? 'oval-loading' : _f, wrapperStyle = _a.wrapperStyle, wrapperClass = _a.wrapperClass, _g = _a.visible, visible = _g === void 0 ? true : _g, _h = _a.strokeWidth, strokeWidth = _h === void 0 ? 2 : _h, strokeWidthSecondary = _a.strokeWidthSecondary;\n return (React.createElement(\"div\", { style: __assign(__assign(__assign({}, getDefaultStyle(visible)), wrapperStyle), { padding: 3 }), className: wrapperClass, \"data-testid\": \"oval-loading\" },\n React.createElement(\"svg\", { width: width, height: height, viewBox: getViewBoxSize(Number(strokeWidth), Number(strokeWidthSecondary || strokeWidth), RADIUS), xmlns: \"http://www.w3.org/2000/svg\", stroke: color, \"data-testid\": \"oval-svg\", \"aria-label\": ariaLabel },\n React.createElement(\"g\", { fill: \"none\", fillRule: \"evenodd\" },\n React.createElement(\"g\", { transform: \"translate(1 1)\", strokeWidth: Number(strokeWidthSecondary || strokeWidth) },\n React.createElement(\"circle\", { strokeOpacity: \".5\", cx: \"0\", cy: \"0\", r: RADIUS, stroke: secondaryColor, strokeWidth: strokeWidth }),\n React.createElement(\"path\", { d: getPath(RADIUS) },\n React.createElement(\"animateTransform\", { attributeName: \"transform\", type: \"rotate\", from: \"0 0 0\", to: \"360 0 0\", dur: \"1s\", repeatCount: \"indefinite\" })))))));\n};\nexport default Oval;\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 React from 'react';\nvar getDefaultStyle = function (visible) { return ({\n display: visible ? 'flex' : 'none'\n}); };\nvar ThreeDots = function (_a) {\n var _b = _a.height, height = _b === void 0 ? 80 : _b, _c = _a.width, width = _c === void 0 ? 80 : _c, _d = _a.radius, radius = _d === void 0 ? 9 : _d, _e = _a.color, color = _e === void 0 ? 'green' : _e, _f = _a.ariaLabel, ariaLabel = _f === void 0 ? 'three-dots-loading' : _f, wrapperStyle = _a.wrapperStyle, wrapperClass = _a.wrapperClass, _g = _a.visible, visible = _g === void 0 ? true : _g;\n return (React.createElement(\"div\", { style: __assign(__assign({}, getDefaultStyle(visible)), wrapperStyle), className: wrapperClass, \"data-testid\": \"three-dots-loading\" },\n React.createElement(\"svg\", { width: width, height: height, viewBox: \"0 0 120 30\", xmlns: \"http://www.w3.org/2000/svg\", fill: color, \"aria-label\": ariaLabel, \"data-testid\": \"three-dots-svg\" },\n React.createElement(\"circle\", { cx: \"15\", cy: \"15\", r: Number(radius) + 6 },\n React.createElement(\"animate\", { attributeName: \"r\", from: \"15\", to: \"15\", begin: \"0s\", dur: \"0.8s\", values: \"15;9;15\", calcMode: \"linear\", repeatCount: \"indefinite\" }),\n React.createElement(\"animate\", { attributeName: \"fill-opacity\", from: \"1\", to: \"1\", begin: \"0s\", dur: \"0.8s\", values: \"1;.5;1\", calcMode: \"linear\", repeatCount: \"indefinite\" })),\n React.createElement(\"circle\", { cx: \"60\", cy: \"15\", r: radius, attributeName: \"fill-opacity\", from: \"1\", to: \"0.3\" },\n React.createElement(\"animate\", { attributeName: \"r\", from: \"9\", to: \"9\", begin: \"0s\", dur: \"0.8s\", values: \"9;15;9\", calcMode: \"linear\", repeatCount: \"indefinite\" }),\n React.createElement(\"animate\", { attributeName: \"fill-opacity\", from: \"0.5\", to: \"0.5\", begin: \"0s\", dur: \"0.8s\", values: \".5;1;.5\", calcMode: \"linear\", repeatCount: \"indefinite\" })),\n React.createElement(\"circle\", { cx: \"105\", cy: \"15\", r: Number(radius) + 6 },\n React.createElement(\"animate\", { attributeName: \"r\", from: \"15\", to: \"15\", begin: \"0s\", dur: \"0.8s\", values: \"15;9;15\", calcMode: \"linear\", repeatCount: \"indefinite\" }),\n React.createElement(\"animate\", { attributeName: \"fill-opacity\", from: \"1\", to: \"1\", begin: \"0s\", dur: \"0.8s\", values: \"1;.5;1\", calcMode: \"linear\", repeatCount: \"indefinite\" })))));\n};\nexport default ThreeDots;\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, 'role': role, 'aria-checked': 'false' });\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, 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 return _this;\n }\n CheckBox.prototype.changeState = function (state) {\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 }\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 }\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 }\n this.getWrapper().setAttribute('aria-checked', ariaState);\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\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 ['role', 'aria-checked', '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');\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, attrs: { 'role': 'checkbox', 'aria-checked': 'false' }\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.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.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.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.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 {\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","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\nvar ComponentBase = /** @class */ (function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\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 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.renderReactTemplates();\n }\n };\n ComponentBase.prototype.componentDidUpdate = function (prev) {\n if (!this.isshouldComponentUpdateCalled && this.initRenderCalled && !this.isReactForeceUpdate) {\n this.isshouldComponentUpdateCalled = true;\n if (prev !== this.props) {\n this.refreshProperties(this.props, true);\n }\n }\n };\n ComponentBase.prototype.renderReactComponent = function () {\n var ele = this.reactElement;\n if (ele) {\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 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[i]);\n }\n var dpropsClsName = dProps[propkey].split(' ');\n for (var j = 0; j < dpropsClsName.length; j++) {\n this.element.classList.add(dpropsClsName[j]);\n }\n }\n else if (propkey !== 'disabled') {\n delete dProps[propkey];\n }\n }\n else if (propkey === 'value' && nextProps[propkey] === this[propkey]) {\n delete dProps[propkey];\n }\n else if ((propkey === 'valueTemplate' || propkey === 'itemTemplate' || propkey === 'headerTemplate') && nextProps[propkey].toString() === this[propkey].toString()) {\n delete dProps[propkey];\n }\n else if (propkey === 'content' && typeof dProps[propkey] === 'function') {\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 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 this.refreshChild(silent, nextProps);\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[i]) == -1)) {\n this.htmlattributes['className'] = this.htmlattributes['className'] + ' ' + clsList[i];\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 if (!_this.isDestroyed) {\n _this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n });\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 }\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 if (lenSimilarity) {\n for (var i = 0, len = newProps.length; i < len; i++) {\n var curObj = {};\n var oldProp = oldProps[i];\n var newProp = newProps[i];\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[_j]) === '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) || !this.compareValues(oldValue, newValue)) {\n if (!propName) {\n return { status: false };\n }\n status = false;\n curObj[key] = newValue;\n }\n }\n }\n else {\n if (!propName) {\n return { status: false };\n }\n status = false;\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[i];\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[_c1]);\n var compareField2 = getValue(_c1 + '.value.field', changedProps);\n if (compareField1 === compareField2) {\n var propInstance = getValue(changedProps[_c1].key + '.' + changedProps[_c1].index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changedProps[_c1].value);\n }\n else {\n extend(propInstance, changedProps[_c1].value);\n }\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) {\n this.destroy();\n }\n };\n // tslint:disable:no-any\n ComponentBase.prototype.appendReactElement = function (element, container) {\n ReactDOM.render(ReactDOM.createPortal(element, container), container);\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 ;\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 (index && _this.portals[tempPortal[index[indexCount]]].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[i].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 ;\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","// tslint:disable-next-line:no-any\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 // tslint:disable-next-line:no-any\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, detach, extend } from '@syncfusion/ej2-base';\nimport * as ReactDOM from 'react-dom';\nimport * as React from 'react';\n// tslint:disable:no-any\nvar stringCompiler = getTemplateEngine();\nexport function compile(templateElement, helper) {\n if (typeof templateElement === 'string') {\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 if (component && component.isLegacyTemplate) {\n ReactDOM.render(actTemplate(actData), cEle);\n if (!element) {\n detach(cEle);\n }\n }\n else {\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 }\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 { 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.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","/**\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 //eslint-disable-next-line\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 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-range-wrapper')) ? (popupRect ? popupRect.width : 0) :\n (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision coordinates\n * @param {OffsetPosition} position - specifies the position\n * @returns {void}\n */\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft();\n var containerRight = ContainerRight();\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop();\n var containerBottom = ContainerBottom();\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the html element\n * @param {HTMLElement} viewPortElement - specifies the html element\n * @param {number} x - specifies the number\n * @param {number} y - specifies the number\n * @returns {string[]} - returns the string value\n */\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n // 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 // eslint-disable-next-line\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 element.style.top = (pos.position.top + pos.offsetY - (top)) + 'px';\n element.style.left = (pos.position.left + 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","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 this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.unwireEvents();\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 display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\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) {\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') {\n anchorPos.top += (anchorRect.height - eleRect.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 this.wireEvents();\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 && this.element.offsetParent.tagName === 'BODY') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top) ? formatUnit(window.scrollY - parseInt(this.element.style.top))\n : formatUnit(parseInt(this.element.style.top) - 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","/* 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 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 && args.element.tagName !== 'TEXTAREA') {\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) && args.element.tagName !== 'TEXTAREA') {\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 // 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 });\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 });\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 if (inputValue !== '' && !isNullOrUndefined(inputValue) && inputElement.parentElement) {\n inputElement.parentElement.classList.add('e-valid-input');\n }\n else if (floatLabelType !== 'Always' && inputElement.parentElement) {\n inputElement.parentElement.classList.remove('e-valid-input');\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 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) {\n if (value) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\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 if (!isNullOrUndefined(container) &&\n container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([container], CLASSNAMES.INPUTGROUP);\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);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('blur', function (event) {\n setTimeout(function () {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }, 200);\n });\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\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 ((!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 && 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 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 }\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(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(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder, 'aria-placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n element.removeAttribute('aria-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 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 if (isNullOrUndefined(iconEle)) {\n container.classList.remove(CLASSNAMES.INPUTGROUP);\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 * 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[i].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[index].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[index].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[index].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[index].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 }\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 innerWrapper.appendChild(result[i]);\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n if (!container.classList.contains(CLASSNAMES.INPUTGROUP)) {\n container.classList.add(CLASSNAMES.INPUTGROUP);\n }\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 if (!container.classList.contains(CLASSNAMES.INPUTGROUP)) {\n container.classList.add(CLASSNAMES.INPUTGROUP);\n }\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, 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 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 'role': 'calendar'\n });\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 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': '' } });\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 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 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.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek);\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\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 = 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) || !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);\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) {\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 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 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 (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 attributes(tdEle, { 'role': 'gridcell' });\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 = date.valueOf();\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false', 'role': 'gridcell' }\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', { attrs: { 'role': 'row' } });\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].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 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 if (multiSelection && !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0])) {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\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 EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\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 _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 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 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 (this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (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 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 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 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 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) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate);\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 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.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 if (!this.isMultiSelection && +this.value !== Number.NaN && (+this.value !== +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 } 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.previousElementValue = '';\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.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 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 this.updateInput();\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType == 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\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-live': 'assertive', 'aria-atomic': 'true',\n 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', '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 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) {\n if (isDynamic === void 0) { isDynamic = false; }\n var formatOptions;\n if (this.value && !this.isCalendar() && !isDynamic) {\n this.disabledDates();\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 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 EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateIconHandler);\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 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 };\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 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.updateInput();\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) && (this.inputWrapper.container.contains(e.target) ||\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'))\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 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 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 formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\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 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, 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' } : { 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 (_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.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 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.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 };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.selectCalendar(event);\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 };\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 >= +this.min && +this.value <= +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)) {\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 this.keyboardModules.destroy();\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n var ariaAttrs = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', '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 this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n detach(this.inputWrapper.container);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\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 () {\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 _super.prototype.render.call(this);\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.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\",\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-activedescendant': '' + this.setActiveDescendant() });\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\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) && !(+new Date(+this.value).setMilliseconds(0) >= +this.min\n && +new Date(+this.value).setMilliseconds(0) <= +this.max))\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 {\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 this.updateInputValue('');\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 break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\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({})\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})();\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.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","import { L10n, getValue, getDefaultDateObject, cldrData } from '@syncfusion/ej2-base';\nvar ARROWLEFT = 'ArrowLeft';\nvar ARROWRIGHT = 'ArrowRight';\nvar ARROWUP = 'ArrowUp';\nvar ARROWDOWN = 'ArrowDown';\nvar TAB = 'Tab';\nvar SHIFTTAB = 'shiftTab';\nvar END = 'End';\nvar HOME = 'Home';\nvar MaskedDateTime = /** @class */ (function () {\n function MaskedDateTime(parent) {\n this.mask = '';\n this.defaultConstant = {\n day: 'day',\n month: 'month',\n year: 'year',\n hour: 'hour',\n minute: 'minute',\n second: 'second',\n dayOfTheWeek: 'day of the week',\n };\n this.hiddenMask = '';\n this.validCharacters = 'dMyhmHfasz';\n this.isDayPart = false;\n this.isMonthPart = false;\n this.isYearPart = false;\n this.isHourPart = false;\n this.isMinutePart = false;\n this.isSecondsPart = false;\n this.isMilliSecondsPart = false;\n this.monthCharacter = '';\n this.periodCharacter = '';\n this.isHiddenMask = false;\n this.isComplete = false;\n this.isNavigate = false;\n this.formatRegex = /EEEEE|EEEE|EEE|EE|E|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|HH|H|hh|h|mm|m|fff|ff|f|aa|a|ss|s|zzzz|zzz|zz|z|'[^']*'|'[^']*'/g;\n this.isDeletion = false;\n this.isShortYear = false;\n this.isDeleteKey = false;\n this.isDateZero = false;\n this.isMonthZero = false;\n this.isYearZero = false;\n this.dayTypeCount = 0;\n this.monthTypeCount = 0;\n this.hourTypeCount = 0;\n this.minuteTypeCount = 0;\n this.secondTypeCount = 0;\n this.parent = parent;\n this.dateformat = this.getCulturedFormat();\n this.maskDateValue = this.parent.value != null ? new Date(+this.parent.value) : new Date();\n this.maskDateValue.setMonth(0);\n this.maskDateValue.setHours(0);\n this.maskDateValue.setMinutes(0);\n this.maskDateValue.setSeconds(0);\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.removeEventListener();\n this.addEventListener();\n }\n MaskedDateTime.prototype.getModuleName = function () {\n return 'MaskedDateTime';\n };\n MaskedDateTime.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('createMask', this.createMask, this);\n this.parent.on('setMaskSelection', this.validCharacterCheck, this);\n this.parent.on('inputHandler', this.maskInputHandler, this);\n this.parent.on('keyDownHandler', this.maskKeydownHandler, this);\n this.parent.on('clearHandler', this.clearHandler, this);\n };\n MaskedDateTime.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('createMask', this.createMask);\n this.parent.off('setMaskSelection', this.validCharacterCheck);\n this.parent.off('inputHandler', this.maskInputHandler);\n this.parent.off('keyDownHandler', this.maskKeydownHandler);\n this.parent.off('clearHandler', this.clearHandler);\n };\n MaskedDateTime.prototype.createMask = function (dateformat) {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.dateformat = this.getCulturedFormat();\n if (this.parent.maskPlaceholder.day)\n this.defaultConstant['day'] = this.parent.maskPlaceholder.day;\n if (this.parent.maskPlaceholder.month)\n this.defaultConstant['month'] = this.parent.maskPlaceholder.month;\n if (this.parent.maskPlaceholder.year)\n this.defaultConstant['year'] = this.parent.maskPlaceholder.year;\n if (this.parent.maskPlaceholder.hour)\n this.defaultConstant['hour'] = this.parent.maskPlaceholder.hour;\n if (this.parent.maskPlaceholder.minute)\n this.defaultConstant['minute'] = this.parent.maskPlaceholder.minute;\n if (this.parent.maskPlaceholder.second)\n this.defaultConstant['second'] = this.parent.maskPlaceholder.second;\n if (this.parent.maskPlaceholder.dayOfTheWeek)\n this.defaultConstant['dayOfTheWeek'] = this.parent.maskPlaceholder.dayOfTheWeek.toString();\n this.getCUltureMaskFormat();\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.mask = this.previousValue = inputValue;\n this.parent.maskedDateValue = this.mask;\n if (this.parent.value) {\n this.setDynamicValue();\n }\n };\n MaskedDateTime.prototype.getCUltureMaskFormat = function () {\n this.l10n = new L10n(this.parent.moduleName, this.defaultConstant, this.parent.locale);\n this.objectString = Object.keys(this.defaultConstant);\n for (var i = 0; i < this.objectString.length; i++) {\n this.defaultConstant[this.objectString[i].toString()] = this.l10n.getConstant(this.objectString[i].toString());\n }\n };\n MaskedDateTime.prototype.validCharacterCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n for (var i = start, j = start - 1; i < this.hiddenMask.length || j >= 0; i++, j--) {\n if (i < this.hiddenMask.length && this.validCharacters.indexOf(this.hiddenMask[i]) !== -1) {\n this.setSelection(this.hiddenMask[i]);\n return;\n }\n if (j >= 0 && this.validCharacters.indexOf(this.hiddenMask[j]) !== -1) {\n this.setSelection(this.hiddenMask[j]);\n return;\n }\n }\n };\n MaskedDateTime.prototype.setDynamicValue = function () {\n this.maskDateValue = this.parent.value;\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = true;\n this.updateValue();\n // this.parent.inputElement.selectionStart = start;\n // this.validCharacterCheck();\n };\n MaskedDateTime.prototype.setSelection = function (validChar) {\n var start = -1;\n var end = 0;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === validChar) {\n end = i + 1;\n if (start === -1) {\n start = i;\n }\n }\n }\n if (start < 0) {\n start = 0;\n }\n this.parent.inputElement.setSelectionRange(start, end);\n };\n MaskedDateTime.prototype.maskKeydownHandler = function (args) {\n if (args.e.key === 'Delete') {\n this.isDeleteKey = true;\n return;\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWLEFT || args.e.key === ARROWRIGHT || args.e.key === SHIFTTAB || args.e.key === TAB || args.e.action === SHIFTTAB ||\n args.e.key === END || args.e.key === HOME)) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var length_1 = this.parent.inputElement.value.length;\n if ((start == 0 && end == length_1) && (args.e.key === TAB || args.e.action === SHIFTTAB)) {\n var index = args.e.action === SHIFTTAB ? end : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = index;\n }\n if (args.e.key === END || args.e.key === HOME) {\n var range = args.e.key === END ? length_1 : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = range;\n }\n this.navigateSelection(args.e.key === ARROWLEFT || args.e.action === SHIFTTAB || args.e.key === END ? true : false);\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWUP || args.e.key === ARROWDOWN)) {\n var start = this.parent.inputElement.selectionStart;\n this.dateAlteration(args.e.key === ARROWDOWN ? true : false);\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n }\n };\n MaskedDateTime.prototype.differenceCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n var inputValue = this.parent.inputElement.value;\n var previousVal = this.previousValue.substring(0, start + this.previousValue.length - inputValue.length);\n var newVal = inputValue.substring(0, start);\n var newDateValue = new Date(+this.maskDateValue);\n var maxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (previousVal.indexOf(newVal) === 0 && (newVal.length === 0 || this.previousHiddenMask[newVal.length - 1] !== this.previousHiddenMask[newVal.length])) {\n for (var i = newVal.length; i < previousVal.length; i++) {\n if (this.previousHiddenMask[i] !== '' && this.validCharacters.indexOf(this.previousHiddenMask[i]) >= 0) {\n this.isDeletion = this.handleDeletion(this.previousHiddenMask[i], false);\n }\n }\n if (this.isDeletion) {\n return;\n }\n }\n switch (this.previousHiddenMask[start - 1]) {\n case 'd':\n var date = (this.isDayPart && newDateValue.getDate().toString().length < 2 ? newDateValue.getDate() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.isDateZero = (newVal[start - 1] == '0');\n if (isNaN(date)) {\n return;\n }\n for (var i = 0; date > maxDate; i++) {\n date = parseInt(date.toString().slice(1), 10);\n }\n if (date >= 1) {\n newDateValue.setDate(date);\n this.isNavigate = date.toString().length === 2;\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n if (newDateValue.getMonth() !== this.maskDateValue.getMonth()) {\n return;\n }\n this.isDayPart = true;\n this.dayTypeCount = this.dayTypeCount + 1;\n }\n else {\n this.isDayPart = false;\n this.dayTypeCount = this.isDateZero ? this.dayTypeCount + 1 : this.dayTypeCount;\n }\n break;\n case 'M':\n var month = void 0;\n if (newDateValue.getMonth().toString().length < 2) {\n month = (this.isMonthPart ? (newDateValue.getMonth() + 1) * 10 : 0) + parseInt(newVal[start - 1], 10);\n }\n else {\n month = parseInt(newVal[start - 1], 10);\n }\n this.isMonthZero = (newVal[start - 1] == '0');\n if (!isNaN(month)) {\n while (month > 12) {\n month = parseInt(month.toString().slice(1), 10);\n }\n if (month >= 1) {\n newDateValue.setMonth(month - 1);\n this.isNavigate = month.toString().length === 2;\n if (newDateValue.getMonth() !== month - 1) {\n newDateValue.setDate(1);\n newDateValue.setMonth(month - 1);\n }\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() == previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isMonthPart = true;\n this.monthTypeCount = this.monthTypeCount + 1;\n }\n else {\n newDateValue.setMonth(0);\n this.isMonthPart = false;\n this.monthTypeCount = this.isMonthZero ? this.monthTypeCount + 1 : this.monthTypeCount;\n }\n }\n else { // let monthString: string[] = (getValue('months[stand-alone].wide', getDefaultDateObject()));\n var monthString = (this.getCulturedValue('months[stand-alone].wide'));\n var monthValue = Object.keys(monthString);\n this.monthCharacter += newVal[start - 1].toLowerCase();\n while (this.monthCharacter.length > 0) {\n var i = 1;\n for (var _i = 0, monthValue_1 = monthValue; _i < monthValue_1.length; _i++) {\n var months = monthValue_1[_i];\n if (monthString[i].toLowerCase().indexOf(this.monthCharacter) === 0) {\n newDateValue.setMonth(i - 1);\n this.isMonthPart = true;\n this.maskDateValue = newDateValue;\n return;\n }\n i++;\n }\n this.monthCharacter = this.monthCharacter.substring(1, this.monthCharacter.length);\n }\n }\n break;\n case 'y':\n var year = (this.isYearPart && (newDateValue.getFullYear().toString().length < 4 && !this.isShortYear) ? newDateValue.getFullYear() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.isShortYear = false;\n this.isYearZero = (newVal[start - 1] == '0');\n if (isNaN(year)) {\n return;\n }\n while (year > 9999) {\n year = parseInt(year.toString().slice(1), 10);\n }\n if (year < 1) {\n this.isYearPart = false;\n }\n else {\n newDateValue.setFullYear(year);\n if (year.toString().length === 4) {\n this.isNavigate = true;\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isYearPart = true;\n }\n break;\n case 'h':\n this.hour = (this.isHourPart && (newDateValue.getHours() % 12 || 12).toString().length < 2 ? (newDateValue.getHours() % 12 || 12) * 10 : 0) + parseInt(newVal[start - 1], 10);\n if (isNaN(this.hour)) {\n return;\n }\n while (this.hour > 12) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(Math.floor(newDateValue.getHours() / 12) * 12 + (this.hour % 12));\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'H':\n this.hour = (this.isHourPart && newDateValue.getHours().toString().length < 2 ? newDateValue.getHours() * 10 : 0) + parseInt(newVal[start - 1], 10);\n if (isNaN(this.hour)) {\n return;\n }\n for (var i = 0; this.hour > 23; i++) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(this.hour);\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'm':\n var minutes = (this.isMinutePart && newDateValue.getMinutes().toString().length < 2 ? newDateValue.getMinutes() * 10 : 0) + parseInt(newVal[start - 1], 10);\n if (isNaN(minutes)) {\n return;\n }\n for (var i = 0; minutes > 59; i++) {\n minutes = parseInt(minutes.toString().slice(1), 10);\n }\n newDateValue.setMinutes(minutes);\n this.isNavigate = minutes.toString().length === 2;\n this.isMinutePart = true;\n this.minuteTypeCount = this.minuteTypeCount + 1;\n break;\n case 's':\n var seconds = (this.isSecondsPart && newDateValue.getSeconds().toString().length < 2 ? newDateValue.getSeconds() * 10 : 0) + parseInt(newVal[start - 1], 10);\n if (isNaN(seconds)) {\n return;\n }\n for (var i = 0; seconds > 59; i++) {\n seconds = parseInt(seconds.toString().slice(1), 10);\n }\n newDateValue.setSeconds(seconds);\n this.isNavigate = seconds.toString().length === 2;\n this.isSecondsPart = true;\n this.secondTypeCount = this.secondTypeCount + 1;\n break;\n case 'a':\n this.periodCharacter += newVal[start - 1].toLowerCase();\n // let periodString: string[] = (getValue('dayPeriods.format.wide', getDefaultDateObject()));;\n var periodString = (this.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n //periodString[periodkeys[0]] : periodString[periodkeys[1]] : periodString[periodkeys[0]];\n for (var i = 0; this.periodCharacter.length > 0; i++) {\n if ((periodString[periodkeys[0]].toLowerCase().indexOf(this.periodCharacter) === 0 && newDateValue.getHours() >= 12) || (periodString[periodkeys[1]].toLowerCase().indexOf(this.periodCharacter) === 0 && newDateValue.getHours() < 12)) {\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n this.maskDateValue = newDateValue;\n }\n this.periodCharacter = this.periodCharacter.substring(1, this.periodCharacter.length);\n // Object.values()\n }\n break;\n default:\n break;\n }\n this.maskDateValue = newDateValue;\n };\n MaskedDateTime.prototype.formatCheck = function () {\n var proxy = this;\n function formatValueSpecifier(formattext) {\n var isSymbol;\n var result;\n var daysAbbreviated = proxy.getCulturedValue('days[stand-alone].abbreviated');\n var dayKeyAbbreviated = Object.keys(daysAbbreviated);\n var daysWide = (proxy.getCulturedValue('days[stand-alone].wide'));\n var dayKeyWide = Object.keys(daysWide);\n var daysNarrow = (proxy.getCulturedValue('days[stand-alone].narrow'));\n var dayKeyNarrow = Object.keys(daysNarrow);\n var monthAbbreviated = (proxy.getCulturedValue('months[stand-alone].abbreviated'));\n var monthWide = (proxy.getCulturedValue('months[stand-alone].wide'));\n var periodString = (proxy.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n var milliseconds;\n var dateOptions;\n switch (formattext) {\n case 'ddd':\n case 'dddd':\n case 'd':\n result = proxy.isDayPart ? proxy.maskDateValue.getDate().toString() : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n break;\n case 'dd':\n result = proxy.isDayPart ? proxy.roundOff(proxy.maskDateValue.getDate(), 2) : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'E':\n case 'EE':\n case 'EEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysAbbreviated[dayKeyAbbreviated[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysWide[dayKeyWide[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysNarrow[dayKeyNarrow[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'M':\n result = proxy.isMonthPart ? (proxy.maskDateValue.getMonth() + 1).toString() : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n break;\n case 'MM':\n result = proxy.isMonthPart ? proxy.roundOff(proxy.maskDateValue.getMonth() + 1, 2) : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MMM':\n result = proxy.isMonthPart ? monthAbbreviated[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'MMMM':\n result = proxy.isMonthPart ? monthWide[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'yy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear() % 100, 2) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n if (proxy.isYearPart) {\n proxy.isNavigate = proxy.isShortYear = (proxy.maskDateValue.getFullYear() % 100).toString().length === 2;\n }\n break;\n case 'y':\n case 'yyyy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear(), 4) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n break;\n case 'h':\n result = proxy.isHourPart ? (proxy.maskDateValue.getHours() % 12 || 12).toString() : proxy.defaultConstant['hour'].toString();\n break;\n case 'hh':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours() % 12 || 12, 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'H':\n result = proxy.isHourPart ? proxy.maskDateValue.getHours().toString() : proxy.defaultConstant['hour'].toString();\n break;\n case 'HH':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours(), 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'm':\n result = proxy.isMinutePart ? proxy.maskDateValue.getMinutes().toString() : proxy.defaultConstant['minute'].toString();\n break;\n case 'mm':\n result = proxy.isMinutePart ? proxy.roundOff(proxy.maskDateValue.getMinutes(), 2) : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 's':\n result = proxy.isSecondsPart ? proxy.maskDateValue.getSeconds().toString() : proxy.defaultConstant['second'].toString();\n break;\n case 'ss':\n result = proxy.isSecondsPart ? proxy.roundOff(proxy.maskDateValue.getSeconds(), 2) : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'f':\n result = Math.floor(proxy.maskDateValue.getMilliseconds() / 100).toString();\n break;\n case 'ff':\n milliseconds = proxy.maskDateValue.getMilliseconds();\n if (proxy.maskDateValue.getMilliseconds() > 99) {\n milliseconds = Math.floor(proxy.maskDateValue.getMilliseconds() / 10);\n }\n result = proxy.roundOff(milliseconds, 2);\n break;\n case 'fff':\n result = proxy.roundOff(proxy.maskDateValue.getMilliseconds(), 3);\n break;\n case 'a':\n case 'aa':\n result = proxy.maskDateValue.getHours() < 12 ? periodString[periodkeys[0]] : periodString[periodkeys[1]];\n break;\n case 'z':\n case 'zz':\n case 'zzz':\n case 'zzzz':\n dateOptions = {\n format: formattext,\n type: 'dateTime', skeleton: 'yMd', calendar: proxy.parent.calendarMode\n };\n result = proxy.parent.globalize.formatDate(proxy.maskDateValue, dateOptions);\n break;\n }\n result = result !== undefined ? result : formattext.slice(1, formattext.length - 1);\n if (proxy.isHiddenMask) {\n var hiddenChar = '';\n for (var i = 0; i < result.length; i++) {\n hiddenChar += formattext[0];\n }\n return hiddenChar;\n }\n else {\n return result;\n }\n }\n return formatValueSpecifier;\n };\n MaskedDateTime.prototype.maskInputHandler = function () {\n var start = this.parent.inputElement.selectionStart;\n var selectionChar = this.previousHiddenMask[start - 1];\n var inputValue;\n this.differenceCheck();\n inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isDateZero = this.isMonthZero = this.isYearZero = false;\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n if ((this.isNavigate || this.isDeletion) && !this.isDeleteKey) {\n var isbackward = this.isNavigate ? false : true;\n this.isNavigate = this.isDeletion = false;\n this.navigateSelection(isbackward);\n }\n this.isDeleteKey = false;\n // this.setSelection(selectionChar);\n // this.navigateSelection(inputValue);\n };\n MaskedDateTime.prototype.navigateSelection = function (isbackward) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var formatIndex = isbackward ? start - 1 : end + 1;\n while (formatIndex < this.hiddenMask.length && formatIndex >= 0) {\n if (this.validCharacters.indexOf(this.hiddenMask[formatIndex]) >= 0) {\n this.setSelection(this.hiddenMask[formatIndex]);\n break;\n }\n formatIndex = formatIndex + (isbackward ? -1 : 1);\n }\n };\n MaskedDateTime.prototype.roundOff = function (val, count) {\n var valueText = val.toString();\n var length = count - valueText.length;\n var result = '';\n for (var i = 0; i < length; i++) {\n result += '0';\n }\n return result + valueText;\n };\n MaskedDateTime.prototype.zeroCheck = function (isZero, isDayPart, resultValue) {\n var result = resultValue;\n if (isZero && !isDayPart) {\n result = '0';\n }\n return result;\n };\n MaskedDateTime.prototype.handleDeletion = function (format, isSegment) {\n switch (format) {\n case 'd':\n this.isDayPart = isSegment;\n break;\n case 'M':\n this.isMonthPart = isSegment;\n if (!isSegment) {\n this.maskDateValue.setMonth(0);\n this.monthCharacter = '';\n }\n break;\n case 'y':\n this.isYearPart = isSegment;\n break;\n case 'H':\n case 'h':\n this.isHourPart = isSegment;\n if (!isSegment) {\n this.periodCharacter = '';\n }\n break;\n case 'm':\n this.isMinutePart = isSegment;\n break;\n case 's':\n this.isSecondsPart = isSegment;\n break;\n default:\n return false;\n }\n return true;\n };\n MaskedDateTime.prototype.dateAlteration = function (isDecrement) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n else {\n return;\n }\n var newDateValue = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n var incrementValue = isDecrement ? -1 : 1;\n switch (formatText) {\n case 'd':\n newDateValue.setDate(newDateValue.getDate() + incrementValue);\n break;\n case 'M':\n var newMonth = newDateValue.getMonth() + incrementValue;\n newDateValue.setDate(1);\n newDateValue.setMonth(newMonth);\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() == previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n break;\n case 'y':\n newDateValue.setFullYear(newDateValue.getFullYear() + incrementValue);\n break;\n case 'H':\n case 'h':\n newDateValue.setHours(newDateValue.getHours() + incrementValue);\n break;\n case 'm':\n newDateValue.setMinutes(newDateValue.getMinutes() + incrementValue);\n break;\n case 's':\n newDateValue.setSeconds(newDateValue.getSeconds() + incrementValue);\n break;\n case 'a':\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n break;\n default:\n break;\n }\n this.maskDateValue = newDateValue.getFullYear() > 0 ? newDateValue : this.maskDateValue;\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n this.handleDeletion(this.hiddenMask[start], true);\n }\n };\n MaskedDateTime.prototype.getCulturedValue = function (format) {\n var locale = this.parent.locale;\n var result;\n if (locale === 'en' || locale === 'en-US') {\n result = getValue(format, getDefaultDateObject());\n }\n else {\n result = getValue('main.' + '' + locale + ('.dates.calendars.gregorian.' + format), cldrData);\n }\n return result;\n };\n MaskedDateTime.prototype.getCulturedFormat = function () {\n var formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.moduleName == 'datepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.format && this.parent.formatString) {\n formatString = this.parent.formatString;\n }\n }\n if (this.parent.moduleName == 'datetimepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.dateTimeFormat) {\n formatString = this.parent.dateTimeFormat;\n }\n }\n if (this.parent.moduleName == 'timepicker') {\n formatString = this.parent.cldrTimeFormat();\n }\n return formatString;\n };\n MaskedDateTime.prototype.clearHandler = function () {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.updateValue();\n };\n MaskedDateTime.prototype.updateValue = function () {\n this.monthCharacter = this.periodCharacter = '';\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.updateInputValue(inputValue);\n //this.parent.inputElement.value = inputValue;\n };\n MaskedDateTime.prototype.destroy = function () {\n this.removeEventListener();\n };\n return MaskedDateTime;\n}());\nexport { MaskedDateTime };\n","/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue } 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 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 = 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 (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})();\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 * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n * @param {DataOptions} 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 * @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 * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} 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 * @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 * @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 * @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 * @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 * @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 * @param {Object[]} ds\n * @param {{validate:Function}} e\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 * @param {Object[]} ds\n * @param {{field:string} e\n * @param {string}} 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 * @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 * @param {Object[]} ds\n * @param {{comparer:(a:Object} e\n * @param {Object} b\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 * @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 * @param {Object[]} ds\n * @param {{pageSize:number} e\n * @param {number}} pageIndex\n * @param {Query} query\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 * @param {Object[]} ds\n * @param {{start:number} e\n * @param {number}} 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 * @param {Object[]} ds\n * @param {{nos:number}} e\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 * @param {Object[]} ds\n * @param {{nos:number}} e\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 * @param {Object[]} ds\n * @param {{fieldNames:string}} e\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 * @param {DataManager} dm\n * @param {Object} data\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 * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} 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 * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} 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 * @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 * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} 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 * @param {Object} req\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 * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param {CrudOptions} 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 * @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 * @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 * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\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 * @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 * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\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 * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\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 * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\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 * @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 * @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 * @param {Predicate} pred\n * @param {boolean} 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 val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\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 operator = DataUtil.odBiOperator[predicate.operator];\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 === 'substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\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 * @param {Predicate} pred\n * @param {boolean} 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 * @param {Predicate} filter\n * @param {boolean} 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 * @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 * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} 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 * @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 * @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 * @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 * @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 * @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 * @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 * @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 * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} 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 * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} 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 * @param {Object} req\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 * @param {DataManager} dm\n * @param {Object} data\n * @param {string} 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 * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} 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 * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\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 * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\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 * @param {Object[]} arr\n * @param {RemoteArgs} e\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 * @param {Object[]} arr\n * @param {RemoteArgs} e\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 * @param {Object[]} arr\n * @param {RemoteArgs} e\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 * @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 * @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 * @param {Predicate} pred\n * @param {boolean} 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 * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} 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 * @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 * @param {string} e\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 * @param {string} e\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 * @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 * @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 * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaName]) {\n var dataUrl = data[metaName].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 if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\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 * @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 * @param {DataManager} dm\n * @param {Object} data\n * @param {string} 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 * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} 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 * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} 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 * @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 * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} 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 * @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 * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} 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 * @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 * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\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 * @hidden\n */\nvar CustomDataAdaptor = /** @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: new Function(),\n addRecord: new Function(),\n updateRecord: new Function(),\n deleteRecord: new Function(),\n batchUpdate: new Function()\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\nexport { CustomDataAdaptor };\n/**\n * The GraphqlAdaptor that is extended from URL Adaptor, is used for retrieving data from the Graphql server.\n * It interacts with the Graphql server with all the DataManager Queries and performs CRUD operations.\n * @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 _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : 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 * @param {DataManager} dm\n * @param {Query} 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 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 * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} 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 * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\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 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 * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} 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;\n 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 * @param {string} url\n * @param {Query} 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 * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems;\n 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 return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\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 */\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 data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\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 * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} 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 * @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 * @param {DataManager} dm\n * @param {Object} data\n * @param {string} 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 * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} 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 * @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","import { Ajax } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { 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 * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} 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.requests = [];\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 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 };\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 (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 * Overrides DataManager's default query with given query.\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 * @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 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 * @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 (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.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 (window.setImmediate || window.setTimeout)(fn, 0);\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 if (!isNullOrUndefined(data['errors'])) {\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 * @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 */\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 if (!isNullOrUndefined(data['errors'])) {\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 * @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 */\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 * @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 * @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.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 if (!isNullOrUndefined(data['errors'])) {\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 ;\n DataManager.prototype.failureFunc = function (e) {\n this.ajaxDeffered.reject([{ error: e }]);\n };\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 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","import { 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 * @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 * @param {Function|string|string[]|number} value\n * @param {Object} 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 * @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 starts with given string.\n * @param {string} str\n * @param {string} startstr\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * To return the sorting function based on the string.\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 * @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 * @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 * @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 * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\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 * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} 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 * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} 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 * @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 return from[nameSpace];\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 }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\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 * @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 * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} 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 * @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 * @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 * @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 * @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 * @param {Object[]} json\n * @param {string} field\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 * @param {string} datamanager\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 var result = sampledata.executeLocal(query);\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 search.filter(function (e) { return query.search(e.key, e.fields, e['operator'], 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 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 * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n * @param {string} er\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\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 * @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 * @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 * @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 * @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 * @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 * @param {Object[]} ds\n * @param {string} 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 };\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 };\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 * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} 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 * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\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 * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} 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 * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} 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 * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} 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 * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} 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 * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\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 given input value is not null.\n * @param {string|number} actual\n * @returns boolean\n */\n notnull: function (actual) {\n return actual !== null;\n },\n /**\n * Returns true when the given input value is null.\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null;\n },\n /**\n * Returns true when the actual input starts with the given string\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\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 ends with the given string.\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\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 * It will return the filter operator based on the filter symbol.\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 * @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 * @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 * @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 }\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 * @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 * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\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 }\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 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)), 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], 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n * @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 * @param {string} value\n */\n isGuid: function (value) {\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 * @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 * @param {string} key\n * @param {Object} val\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 * @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 * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n if (key === 'value' && value) {\n if (typeof value === 'string') {\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 }\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","import { 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 * @param {string|string[]} 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 * @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 * @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 * @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 * @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 * @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 * @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 * @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 * @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 * @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 */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent);\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 * @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 */\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 * @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 */\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 * @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 {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 * @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 * @param {string} fieldName - Defines the column field.\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 * @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 * @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 * @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 * @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 * @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 * @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 * @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 * @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 * @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 * @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 * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent) {\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.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 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 * @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 * @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 */\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 * @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 * @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 */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\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 * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var isAnd;\n var ret;\n if (!this.isComplex && this.comparer) {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n isAnd = this.condition === 'and';\n for (var i = 0; i < predicate.length; i++) {\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 };\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","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.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 this.renderComplete();\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 this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\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 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-haspopup': 'true', 'aria-autocomplete': 'list', 'tabindex': '0', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', '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-haspopup': 'true', 'aria-autocomplete': 'list', 'tabindex': '0', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', '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 };\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.openPopupEventArgs.appendTo.appendChild(this.popupWrapper);\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.setAttribute('aria-activedescendant', 'null');\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 this.popupObj.element.style.maxHeight = POPUPDIMENSION;\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) || (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') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\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.enableMask || 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 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.notify(\"setMaskSelection\", {\n module: \"MaskedDateTime\"\n });\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.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 };\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 || 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]) ? 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 this.selectInputText();\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) {\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)) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\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': '0' } });\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' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && (this.inputWrapper.container.contains(target) ||\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 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 this.inputElement.setAttribute('aria-placeholder', newProp.placeholder);\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 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 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 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, \"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 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 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n this.inputElement.removeAttribute('aria-placeholder');\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 _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 _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();\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 this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function () {\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);\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\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 :\n 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 this.popupObject.refreshPosition(this.inputElement);\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 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) ||\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 && 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.setAttribute('aria-activedescendant', 'null');\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 this.popupObject.element.style.maxHeight = POPUPDIMENSION;\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 return popupHeight > height ? height : popupHeight;\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n _super.prototype.changeEvent.call(this, e);\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 this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\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)) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\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 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]) ? 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 Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\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 this.inputElement.setAttribute('aria-placeholder', newProp.placeholder);\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 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 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(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 * as React from 'react';\nimport { DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the Essential JS 2 React DateTimePicker Component.\n * ```ts\n * \n * ```\n */\nvar DateTimePickerComponent = /** @class */ (function (_super) {\n __extends(DateTimePickerComponent, _super);\n function DateTimePickerComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n DateTimePickerComponent.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 DateTimePickerComponent;\n}(DateTimePicker));\nexport { DateTimePickerComponent };\napplyMixins(DateTimePickerComponent, [ComponentBase, React.Component]);\n","import { isNullOrUndefined, classList, createElement } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_FLUENT_WIDTH = 30;\nvar DEFT_TAIL_WIDTH = 24;\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_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 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 container.wrap.classList.add(args.cssClass);\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 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}\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 '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 '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 */\n// eslint-disable-next-line\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')))\n && (!isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle')))) {\n var svg = container.querySelector('svg.e-spin-material');\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 * @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') {\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// eslint-disable-next-line\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 spinnerWrap = container.classList.contains(CLS_SPINWRAP) ? container :\n container.querySelector('.' + CLS_SPINWRAP);\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 // 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 }\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 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 * 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) {\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 for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var item = itemsData[i];\n var text = (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\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 { item: item, index: i };\n }\n }\n return itemData;\n }\n return itemData;\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 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 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 (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 (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 noDataCompTemp = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n if (noDataCompTemp && noDataCompTemp.length > 0) {\n for (var i = 0; i < noDataCompTemp.length; i++) {\n ele.appendChild(noDataCompTemp[i]);\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') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' : '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 }\n else {\n ele.innerHTML = content;\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 = this.typeOfData(this.listData);\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 (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 * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function () {\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);\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 * @returns {void}\n */\n DropDownBase.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\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'];\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.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) {\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 this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\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 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.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 ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result);\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 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 addClass([this.list], dropDownBaseClasses.noData);\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 // 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 (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.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n prepend([this.fixedHeaderElement], this.list);\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\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 (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 this.list.parentElement.style.display = 'block';\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 var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\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 element.dispatchEvent(evt);\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) {\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 this.setListData(dataSource, fields, query);\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 'enabled':\n this.setEnabled();\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 (isEmptyData) {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\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 this.setEnabled();\n if (!isEmptyData) {\n this.initialize();\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 = 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 this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.list.appendChild(this.ulElement);\n this.liCollections = liCollections;\n append(liCollections, this.ulElement);\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 (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\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 _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(false)\n ], DropDownBase.prototype, \"enablePersistence\", 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(true)\n ], DropDownBase.prototype, \"enabled\", 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 (isEmptyData) {\n _super.prototype.render.call(this, 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 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.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n this.hiddenElement.innerHTML = '';\n this.inputElement.value = '';\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 {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', '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 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false',\n 'aria-activedescendant': 'null',\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 this.inputWrapper.container;\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 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.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 (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 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 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);\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 isNavAction = e.action === 'down' || e.action === 'up' || e.action === 'home' || e.action === 'end';\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 (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n this.renderList();\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();\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 = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex] : this.liCollections[index];\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();\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 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 this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\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 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 !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();\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();\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 = this.getFormattedValue(li.getAttribute('data-value'));\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 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) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n if (this.isFilterLayout() && this.filterInput) {\n attributes(this.filterInput, { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n }\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 attributes(this.inputElement, { 'aria-label': this.inputElement.value });\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id });\n this.targetElement().removeAttribute('aria-live');\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (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 }\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 this.valueTempElement.innerHTML = '';\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (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 for (var i = 0; i < valueCompTemp.length; i++) {\n this.valueTempElement.appendChild(valueCompTemp[i]);\n }\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 this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\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 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 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null,\n 'autocomplete': 'off',\n 'autocorrect': '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 // 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) {\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.updateValues();\n this.initRemoteRender = false;\n this.initial = 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 checkVal = list.some(function (x) { return x[checkField_1] === _this.value; });\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 });\n }\n }\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();\n }\n }\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (isNullOrUndefined(this.actionData.ulElement) && isNullOrUndefined(this.actionData.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.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 () {\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 left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\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 (Browser.isDevice && _this.isFilterLayout()) {\n EventHandler.add(_this.list, 'scroll', _this.listScroll, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n attributes(_this.targetElement(), { '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, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n _this.renderReactTemplates();\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\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, position: { 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 var isResetItem = (_this.getModuleName() === 'autocomplete') ? true : false;\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 (_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.listScroll = function () {\n this.filterInput.blur();\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) {\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 EventHandler.remove(this.list, 'scroll', this.listScroll);\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 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 this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false', 'aria-activedescendant': null });\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 };\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 };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.popupObj.destroy();\n detach(this.popupObj.element);\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', 'textbox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'textbox', 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 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 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 attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\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.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 this.renderComplete();\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n this.footer.innerHTML = '';\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 (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 for (var i = 0; i < footerCompTemp.length; i++) {\n this.footer.appendChild(footerCompTemp[i]);\n }\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 (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 for (var i = 0; i < headerCompTemp.length; i++) {\n this.header.appendChild(headerCompTemp[i]);\n }\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\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 }\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) {\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 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 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 {\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 {\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 = { ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true };\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 break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\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 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 /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function () {\n if (!this.enabled) {\n return;\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();\n }\n this.invokeRenderPopup();\n };\n DropDownList.prototype.invokeRenderPopup = function () {\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.children[0]) || this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.renderPopup();\n }\n attributes(this.targetElement(), { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\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 Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\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();\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 };\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 };\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', 'aria-placeholder',\n 'placeholder', 'aria-owns', 'aria-labelledby', 'aria-haspopup', 'aria-expanded',\n 'aria-activedescendant', 'autocomplete', 'aria-readonly', 'autocorrect',\n 'autocapitalize', '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 _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('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","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.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","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\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 { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { attributes, setValue, SanitizeHtmlHelper, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur, encodePlaceholder } from './float-label';\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = 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 switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function () {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n document.body.appendChild(_this.popupObj.element);\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n if (_this.isFirstClick) {\n _this.loadTemplate();\n }\n }\n });\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', this.value[this.value.length - 1]);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n Search(this.value[this.value.length - 1], this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-multiselectable': 'true',\n 'aria-activedescendant': 'null',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n var disableStatus = (this.inputElement.disabled) ? true : false;\n attributes(this.inputElement, this.getAriaAttributes());\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n var customValue = this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n return this.getQuery(this.query).where(predicate);\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', proxy.value[i]);\n if (!checkEle) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n this.updateActionList(ulElement, list, e);\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n return;\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n this.initialValueUpdate();\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown();\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.firstElementChild.getAttribute('aria-checked');\n if (isNullOrUndefined(ariaValue) || ariaValue === 'false') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox') {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup();\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect 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 MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.filterAction) {\n if (this.targetElement() !== null) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n return filterQuery;\n }\n else {\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length == 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var field = fields ? fields : this.fields;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem = {};\n setValue(field.text, value, dataItem);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number') {\n setValue(field.value, Math.random(), dataItem);\n }\n else {\n setValue(field.value, value, dataItem);\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem);\n this.resetList(tempData, field, query);\n }\n else {\n var tempData = [this.inputElement.value];\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup();\n }\n else {\n this.hidePopup();\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup();\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: oldVal,\n value: newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.value.slice();\n }\n };\n MultiSelect.prototype.getPagingCount = function () {\n var height = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.offsetHeight / parseInt(height, 10));\n };\n MultiSelect.prototype.pageUpSelection = function (steps) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.pageDownSelection = function (steps) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup();\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup();\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n filterInput && filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n else if (this.mode == \"CheckBox\") {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome) {\n this.removeFocus();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n element.classList.add(dropDownBaseClasses.focus);\n this.scrollBottom(element);\n }\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.arrowUp(e);\n break;\n case 40:\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.hidePopup();\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.hidePopup();\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n };\n MultiSelect.prototype.arrowDown = function (e) {\n e.preventDefault();\n this.moveByList(1);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n if (!document.activeElement.classList.contains(FILTERINPUT)) {\n e.preventDefault();\n this.keyAction = true;\n this.list.focus();\n }\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.value[this.value.length - 1];\n this.removeValue(temp, e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset) {\n this.list.scrollTop = nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex) {\n var nextOffset = selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n if (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 = selectedLI.offsetTop - (this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e, li);\n }\n else {\n this.selectAllItem(true, e, li);\n }\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup();\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n this.removeValue(selectedElem.getAttribute('data-value'), e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.moveByList = function (position) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var temp = -1;\n if (elements.length) {\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n this.addListFocus(elements[++temp]);\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n }\n }\n else {\n if (temp > 0) {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup();\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n this.updateMainList(true, value, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n attributes(this.inputElement, { 'aria-activedescendant': element.id });\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var element_1 = this.findListElement(this.list, 'li', 'data-value', value);\n var val_1 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (element_1 !== null) {\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', value);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n if (_this.hideSelectedItem && _this.fields.groupBy) {\n _this.hideGroupItem(value);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, value);\n _this.removeChip(value);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n element2.firstElementChild.setAttribute('aria-checked', 'false');\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n element2.firstElementChild.setAttribute('aria-checked', 'true');\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value) {\n if (this.chipCollectionWrapper) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n _this.updateListSelectEventCallback(value, element, eve);\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE });\n if (this.mainData) {\n itemData = this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n for (var i = 0; i < valueCompTemp.length; i++) {\n chipContent.appendChild(valueCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = data;\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative', position: { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper, collision: { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.loadTemplate();\n }\n _this.setScrollPosition();\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n for (var temp = 0; temp < elements.length; temp++) {\n this.header.appendChild(elements[temp]);\n }\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n for (var temp = 0; temp < elements.length; temp++) {\n this.footer.appendChild(elements[temp]);\n }\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n }\n else {\n this.clearAllCallback(e);\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mouseup', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup();\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n this.dataUpdater(this.mainData, query, this.fields);\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n this.listData = this.mainData;\n this.hiddenElement.innerHTML = '';\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n var listValue = this.findListElement(((!isNullOrUndefined(this.mainList)) ? this.mainList : this.ulElement), 'li', 'data-value', this.value[index]);\n if (isNullOrUndefined(listValue) && !this.allowCustomValue) {\n this.value.splice(index, 1);\n index -= 1;\n }\n else {\n if (this.listData) {\n temp = this.getTextByValue(this.value[index]);\n }\n else {\n temp = this.value[index];\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n this.hiddenElement.innerHTML += '';\n }\n }\n this.setProperties({ text: text.toString() }, true);\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n this.setProperties({ value: textVal }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, isEmptyData);\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function () {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n text = this.getTextByValue(value);\n if ((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) {\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if (value && this.allowCustomValue) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n this.addItem(newValue, indexItem);\n element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && this.value.indexOf(li.getAttribute('data-value')) > -1) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || this.value.indexOf(value) === -1) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value)) {\n var temp_1 = li.cloneNode(true);\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n selectedItems[temp1 - 1].firstElementChild.setAttribute('aria-checked', 'false');\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n selectItems[temp1 - 1].firstElementChild.setAttribute('aria-checked', 'false');\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox') {\n var ariaCheck = element.firstElementChild.getAttribute('aria-checked');\n if (ariaCheck === 'false' || isNullOrUndefined(ariaCheck)) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n attributes(this.inputElement, { 'aria-activedescendant': element.id });\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.keyCode = null;\n this.scrollFocusStatus = false;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup();\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n }\n else {\n e.preventDefault();\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\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 MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = wrapperData;\n }\n else {\n wrapperType.innerText = SanitizeHtmlHelper.sanitize(wrapperData);\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n this.updateWrapperText(this.viewWrapper, data);\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(this.value[index]);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(this.value[index]);\n }\n }\n else {\n temp = this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ? closest(event.target, '.e-list-group-item') : event.target) : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if (li && li.length) {\n var index_1 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.updateListSelection(li[index_1], event, length - index_1);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_1 < length && index_1 < count_1) {\n _this.updateListSelection(li[index_1], event, length - index_1);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n }, 0);\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n }\n };\n MultiSelect.prototype.updateHiddenElement = function () {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '';\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n });\n this.hiddenElement.innerHTML = hiddenValue;\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll)) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\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 MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\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 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', this.value[i]);\n if (!checkEle) {\n valuecheck.push(this.value[i]);\n }\n }\n return valuecheck;\n };\n ;\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n _this.addItem(e.result, list.length);\n _this.updateActionList(ulElement, list, event);\n });\n };\n ;\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop == 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.initialValueUpdate();\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect 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 MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function () {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function () {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n _super.prototype.render.call(_this);\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown();\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\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 MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n this.inputElement.setAttribute('aria-labelledby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n valueCol.push(opt.getAttribute('value'));\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate();\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n _this.initialValueUpdate();\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\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 MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.mainListCollection = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'aria-placeholder', 'placeholder'];\n var length = temp.length;\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n if (this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\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 { MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n* The MultiSelect allows the user to pick a values from the predefined list of values.\n * ```\n * \n * ```\n */\nvar MultiSelectComponent = /** @class */ (function (_super) {\n __extends(MultiSelectComponent, _super);\n function MultiSelectComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n MultiSelectComponent.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 MultiSelectComponent;\n}(MultiSelect));\nexport { MultiSelectComponent };\napplyMixins(MultiSelectComponent, [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 } 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 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 if (this.respectiveElement.tagName !== 'TEXTAREA') {\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n }\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 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') {\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 }\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 (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n this.element.setAttribute('role', 'textbox');\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) {\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 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.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, '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)) {\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.respectiveElement.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.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 this.raiseChangeEvent(args, true);\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 };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.respectiveElement.tagName !== 'TEXTAREA') {\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 }\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, '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-placeholder', '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 _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.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, EventHandler, Property, Event, Browser, L10n } 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'];\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') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\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', 'aria-live': 'assertive' });\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 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 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 attributes(this.hiddenInput, { 'name': this.inputName });\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 'aria-label': 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 'aria-label': 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 attributes(this.element, { 'aria-valuemin': this.min.toString(), 'aria-valuemax': this.max.toString() });\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) {\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('[^1-9]+$');\n if (nonZeroRegex.test(this.element.value)) {\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.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 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 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 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 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 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 EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\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 'autocorrect', 'aria-disabled', 'aria-placeholder', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'tabindex', 'aria-valuemin',\n 'aria-valuemax', 'aria-live', '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 _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 break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\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 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","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.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","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nvar ReCAPTCHA =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReCAPTCHA, _React$Component);\n\n function ReCAPTCHA() {\n var _this;\n\n _this = _React$Component.call(this) || this;\n _this.handleExpired = _this.handleExpired.bind(_assertThisInitialized(_this));\n _this.handleErrored = _this.handleErrored.bind(_assertThisInitialized(_this));\n _this.handleChange = _this.handleChange.bind(_assertThisInitialized(_this));\n _this.handleRecaptchaRef = _this.handleRecaptchaRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n var _proto = ReCAPTCHA.prototype;\n\n _proto.getValue = function getValue() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this.props.grecaptcha.getResponse(this._widgetId);\n }\n\n return null;\n };\n\n _proto.getWidgetId = function getWidgetId() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n return this._widgetId;\n }\n\n return null;\n };\n\n _proto.execute = function execute() {\n var grecaptcha = this.props.grecaptcha;\n\n if (grecaptcha && this._widgetId !== undefined) {\n return grecaptcha.execute(this._widgetId);\n } else {\n this._executeRequested = true;\n }\n };\n\n _proto.executeAsync = function executeAsync() {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n _this2.executionResolve = resolve;\n _this2.executionReject = reject;\n\n _this2.execute();\n });\n };\n\n _proto.reset = function reset() {\n if (this.props.grecaptcha && this._widgetId !== undefined) {\n this.props.grecaptcha.reset(this._widgetId);\n }\n };\n\n _proto.handleExpired = function handleExpired() {\n if (this.props.onExpired) {\n this.props.onExpired();\n } else {\n this.handleChange(null);\n }\n };\n\n _proto.handleErrored = function handleErrored() {\n if (this.props.onErrored) {\n this.props.onErrored();\n }\n\n if (this.executionReject) {\n this.executionReject();\n delete this.executionResolve;\n delete this.executionReject;\n }\n };\n\n _proto.handleChange = function handleChange(token) {\n if (this.props.onChange) {\n this.props.onChange(token);\n }\n\n if (this.executionResolve) {\n this.executionResolve(token);\n delete this.executionReject;\n delete this.executionResolve;\n }\n };\n\n _proto.explicitRender = function explicitRender() {\n if (this.props.grecaptcha && this.props.grecaptcha.render && this._widgetId === undefined) {\n var wrapper = document.createElement(\"div\");\n this._widgetId = this.props.grecaptcha.render(wrapper, {\n sitekey: this.props.sitekey,\n callback: this.handleChange,\n theme: this.props.theme,\n type: this.props.type,\n tabindex: this.props.tabindex,\n \"expired-callback\": this.handleExpired,\n \"error-callback\": this.handleErrored,\n size: this.props.size,\n stoken: this.props.stoken,\n hl: this.props.hl,\n badge: this.props.badge\n });\n this.captcha.appendChild(wrapper);\n }\n\n if (this._executeRequested && this.props.grecaptcha && this._widgetId !== undefined) {\n this._executeRequested = false;\n this.execute();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.explicitRender();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.explicitRender();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this._widgetId !== undefined) {\n this.delayOfCaptchaIframeRemoving();\n this.reset();\n }\n };\n\n _proto.delayOfCaptchaIframeRemoving = function delayOfCaptchaIframeRemoving() {\n var temporaryNode = document.createElement(\"div\");\n document.body.appendChild(temporaryNode);\n temporaryNode.style.display = \"none\"; // move of the recaptcha to a temporary node\n\n while (this.captcha.firstChild) {\n temporaryNode.appendChild(this.captcha.firstChild);\n } // delete the temporary node after reset will be done\n\n\n setTimeout(function () {\n document.body.removeChild(temporaryNode);\n }, 5000);\n };\n\n _proto.handleRecaptchaRef = function handleRecaptchaRef(elem) {\n this.captcha = elem;\n };\n\n _proto.render = function render() {\n // consume properties owned by the reCATPCHA, pass the rest to the div so the user can style it.\n\n /* eslint-disable no-unused-vars */\n var _this$props = this.props,\n sitekey = _this$props.sitekey,\n onChange = _this$props.onChange,\n theme = _this$props.theme,\n type = _this$props.type,\n tabindex = _this$props.tabindex,\n onExpired = _this$props.onExpired,\n onErrored = _this$props.onErrored,\n size = _this$props.size,\n stoken = _this$props.stoken,\n grecaptcha = _this$props.grecaptcha,\n badge = _this$props.badge,\n hl = _this$props.hl,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"sitekey\", \"onChange\", \"theme\", \"type\", \"tabindex\", \"onExpired\", \"onErrored\", \"size\", \"stoken\", \"grecaptcha\", \"badge\", \"hl\"]);\n /* eslint-enable no-unused-vars */\n\n\n return React.createElement(\"div\", _extends({}, childProps, {\n ref: this.handleRecaptchaRef\n }));\n };\n\n return ReCAPTCHA;\n}(React.Component);\n\nexport { ReCAPTCHA as default };\nReCAPTCHA.displayName = \"ReCAPTCHA\";\nReCAPTCHA.propTypes = {\n sitekey: PropTypes.string.isRequired,\n onChange: PropTypes.func,\n grecaptcha: PropTypes.object,\n theme: PropTypes.oneOf([\"dark\", \"light\"]),\n type: PropTypes.oneOf([\"image\", \"audio\"]),\n tabindex: PropTypes.number,\n onExpired: PropTypes.func,\n onErrored: PropTypes.func,\n size: PropTypes.oneOf([\"compact\", \"normal\", \"invisible\"]),\n stoken: PropTypes.string,\n hl: PropTypes.string,\n badge: PropTypes.oneOf([\"bottomright\", \"bottomleft\", \"inline\"])\n};\nReCAPTCHA.defaultProps = {\n onChange: function onChange() {},\n theme: \"light\",\n type: \"image\",\n tabindex: 0,\n size: \"normal\",\n badge: \"bottomright\"\n};","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nimport { Component, createElement, forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nvar SCRIPT_MAP = {}; // A counter used to generate a unique id for each component that uses the function\n\nvar idCount = 0;\nexport default function makeAsyncScript(getScriptURL, options) {\n options = options || {};\n return function wrapWithAsyncScript(WrappedComponent) {\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n\n var AsyncScriptLoader =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(AsyncScriptLoader, _Component);\n\n function AsyncScriptLoader(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.state = {};\n _this.__scriptURL = \"\";\n return _this;\n }\n\n var _proto = AsyncScriptLoader.prototype;\n\n _proto.asyncScriptLoaderGetScriptLoaderID = function asyncScriptLoaderGetScriptLoaderID() {\n if (!this.__scriptLoaderID) {\n this.__scriptLoaderID = \"async-script-loader-\" + idCount++;\n }\n\n return this.__scriptLoaderID;\n };\n\n _proto.setupScriptURL = function setupScriptURL() {\n this.__scriptURL = typeof getScriptURL === \"function\" ? getScriptURL() : getScriptURL;\n return this.__scriptURL;\n };\n\n _proto.asyncScriptLoaderHandleLoad = function asyncScriptLoaderHandleLoad(state) {\n var _this2 = this;\n\n // use reacts setState callback to fire props.asyncScriptOnLoad with new state/entry\n this.setState(state, function () {\n return _this2.props.asyncScriptOnLoad && _this2.props.asyncScriptOnLoad(_this2.state);\n });\n };\n\n _proto.asyncScriptLoaderTriggerOnScriptLoaded = function asyncScriptLoaderTriggerOnScriptLoaded() {\n var mapEntry = SCRIPT_MAP[this.__scriptURL];\n\n if (!mapEntry || !mapEntry.loaded) {\n throw new Error(\"Script is not loaded.\");\n }\n\n for (var obsKey in mapEntry.observers) {\n mapEntry.observers[obsKey](mapEntry);\n }\n\n delete window[options.callbackName];\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this3 = this;\n\n var scriptURL = this.setupScriptURL();\n var key = this.asyncScriptLoaderGetScriptLoaderID();\n var _options = options,\n globalName = _options.globalName,\n callbackName = _options.callbackName,\n scriptId = _options.scriptId; // check if global object already attached to window\n\n if (globalName && typeof window[globalName] !== \"undefined\") {\n SCRIPT_MAP[scriptURL] = {\n loaded: true,\n observers: {}\n };\n } // check if script loading already\n\n\n if (SCRIPT_MAP[scriptURL]) {\n var entry = SCRIPT_MAP[scriptURL]; // if loaded or errored then \"finish\"\n\n if (entry && (entry.loaded || entry.errored)) {\n this.asyncScriptLoaderHandleLoad(entry);\n return;\n } // if still loading then callback to observer queue\n\n\n entry.observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n return;\n }\n /*\n * hasn't started loading\n * start the \"magic\"\n * setup script to load and observers\n */\n\n\n var observers = {};\n\n observers[key] = function (entry) {\n return _this3.asyncScriptLoaderHandleLoad(entry);\n };\n\n SCRIPT_MAP[scriptURL] = {\n loaded: false,\n observers: observers\n };\n var script = document.createElement(\"script\");\n script.src = scriptURL;\n script.async = true;\n\n for (var attribute in options.attributes) {\n script.setAttribute(attribute, options.attributes[attribute]);\n }\n\n if (scriptId) {\n script.id = scriptId;\n }\n\n var callObserverFuncAndRemoveObserver = function callObserverFuncAndRemoveObserver(func) {\n if (SCRIPT_MAP[scriptURL]) {\n var mapEntry = SCRIPT_MAP[scriptURL];\n var observersMap = mapEntry.observers;\n\n for (var obsKey in observersMap) {\n if (func(observersMap[obsKey])) {\n delete observersMap[obsKey];\n }\n }\n }\n };\n\n if (callbackName && typeof window !== \"undefined\") {\n window[callbackName] = function () {\n return _this3.asyncScriptLoaderTriggerOnScriptLoaded();\n };\n }\n\n script.onload = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.loaded = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n if (callbackName) {\n return false;\n }\n\n observer(mapEntry);\n return true;\n });\n }\n };\n\n script.onerror = function () {\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n mapEntry.errored = true;\n callObserverFuncAndRemoveObserver(function (observer) {\n observer(mapEntry);\n return true;\n });\n }\n };\n\n document.body.appendChild(script);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n // Remove tag script\n var scriptURL = this.__scriptURL;\n\n if (options.removeOnUnmount === true) {\n var allScripts = document.getElementsByTagName(\"script\");\n\n for (var i = 0; i < allScripts.length; i += 1) {\n if (allScripts[i].src.indexOf(scriptURL) > -1) {\n if (allScripts[i].parentNode) {\n allScripts[i].parentNode.removeChild(allScripts[i]);\n }\n }\n }\n } // Clean the observer entry\n\n\n var mapEntry = SCRIPT_MAP[scriptURL];\n\n if (mapEntry) {\n delete mapEntry.observers[this.asyncScriptLoaderGetScriptLoaderID()];\n\n if (options.removeOnUnmount === true) {\n delete SCRIPT_MAP[scriptURL];\n }\n }\n };\n\n _proto.render = function render() {\n var globalName = options.globalName; // remove asyncScriptOnLoad from childProps\n\n var _this$props = this.props,\n asyncScriptOnLoad = _this$props.asyncScriptOnLoad,\n forwardedRef = _this$props.forwardedRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"asyncScriptOnLoad\", \"forwardedRef\"]); // eslint-disable-line no-unused-vars\n\n\n if (globalName && typeof window !== \"undefined\") {\n childProps[globalName] = typeof window[globalName] !== \"undefined\" ? window[globalName] : undefined;\n }\n\n childProps.ref = forwardedRef;\n return createElement(WrappedComponent, childProps);\n };\n\n return AsyncScriptLoader;\n }(Component); // Note the second param \"ref\" provided by React.forwardRef.\n // We can pass it along to AsyncScriptLoader as a regular prop, e.g. \"forwardedRef\"\n // And it can then be attached to the Component.\n\n\n var ForwardedComponent = forwardRef(function (props, ref) {\n return createElement(AsyncScriptLoader, _extends({}, props, {\n forwardedRef: ref\n }));\n });\n ForwardedComponent.displayName = \"AsyncScriptLoader(\" + wrappedComponentName + \")\";\n ForwardedComponent.propTypes = {\n asyncScriptOnLoad: PropTypes.func\n };\n return hoistStatics(ForwardedComponent, WrappedComponent);\n };\n}","import ReCAPTCHA from \"./recaptcha\";\nimport makeAsyncScriptLoader from \"react-async-script\";\nvar callbackName = \"onloadcallback\";\nvar globalName = \"grecaptcha\";\n\nfunction getOptions() {\n return typeof window !== \"undefined\" && window.recaptchaOptions || {};\n}\n\nfunction getURL() {\n var dynamicOptions = getOptions();\n var hostname = dynamicOptions.useRecaptchaNet ? \"recaptcha.net\" : \"www.google.com\";\n return \"https://\" + hostname + \"/recaptcha/api.js?onload=\" + callbackName + \"&render=explicit\";\n}\n\nexport default makeAsyncScriptLoader(getURL, {\n callbackName: callbackName,\n globalName: globalName\n})(ReCAPTCHA);","import RecaptchaWrapper from \"./recaptcha-wrapper\";\nimport ReCAPTCHA from \"./recaptcha\";\nexport default RecaptchaWrapper;\nexport { ReCAPTCHA };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import appConfig from \"../config\"\r\n\r\ninterface props {\r\n data?: any\r\n token?: string\r\n headers?: any\r\n}\r\n\r\nasync function client(\r\n endpoint: string,\r\n { data, token, headers: customHeaders, ...customConfig }: props\r\n) {\r\n const config = {\r\n method: data ? \"POST\" : \"GET\",\r\n body: data ? JSON.stringify(data) : undefined,\r\n headers: {\r\n Authorization: token ? `Bearer ${token}` : undefined,\r\n \"Content-Type\": data ? \"application/json\" : undefined,\r\n ...customHeaders,\r\n },\r\n ...customConfig,\r\n }\r\n\r\n return window.fetch(`${appConfig.url}/${endpoint}`, config).then(async (response: any) => {\r\n const data = await response.json()\r\n if (response.ok) {\r\n return data\r\n } else if (response.status === 404) {\r\n return Promise.reject(response.title)\r\n } else {\r\n return Promise.reject(data)\r\n }\r\n })\r\n}\r\n\r\nexport { client }\r\n","import React from \"react\"\r\nimport FosLogo from \"../../assets/favicon.png\"\r\n\r\ninterface SuccessMessageProps {\r\n title: string,\r\n message: string,\r\n isEmbeded: boolean,\r\n showFooter: boolean\r\n}\r\n\r\nconst SuccessMessage = ({title, message, isEmbeded, showFooter}: SuccessMessageProps) => {\r\n return (\r\n
\r\n )\r\n}\r\n\r\nexport default SuccessMessage\r\n","import { CheckBoxComponent } from \"@syncfusion/ej2-react-buttons\"\r\nimport {\r\n DatePickerComponent,\r\n DateTimePickerComponent,\r\n Inject,\r\n MaskedDateTime,\r\n} from \"@syncfusion/ej2-react-calendars\"\r\nimport { DropDownListComponent, MultiSelectComponent } from \"@syncfusion/ej2-react-dropdowns\"\r\nimport { NumericTextBoxComponent, TextBoxComponent } from \"@syncfusion/ej2-react-inputs\"\r\nimport moment from \"moment\"\r\nimport { FormEvent, Fragment, useEffect, useState } from \"react\"\r\nimport Recaptcha from \"react-google-recaptcha\"\r\nimport { Oval } from \"react-loader-spinner\"\r\nimport FosLogo from \"../../assets/favicon.png\"\r\nimport { client } from \"../../utils/api-client\"\r\nimport { useAsync } from \"../../utils/hooks\"\r\nimport SuccessMessage from \"../success-message/successMessage\"\r\nimport appConfig from \"../../config\"\r\nimport { InquiryFormModel } from \"../../models/inquiryForm\"\r\nimport React from \"react\"\r\n\r\ninterface InquiryFormProps {\r\n form: InquiryFormModel\r\n isEmbeded: boolean\r\n}\r\ninterface customFields {\r\n customFieldDefinitionReference: string\r\n value: string | null\r\n isCustomField: boolean\r\n normalizedName: string\r\n displayName: string\r\n}\r\n\r\nconst InquiryForm = ({ form, isEmbeded }: InquiryFormProps) => {\r\n //#region variable declaration\r\n const { isLoading, run } = useAsync()\r\n const [errors, setErrors] = useState<{ [key: string]: string }>({})\r\n const [submitted, setSubmitted] = useState(false)\r\n const [recaptchaToken, setRecaptchaToken] = useState(\"\")\r\n const grecaptchaObject = window.grecaptcha\r\n const [multiSelectValues, setMultiSelectValues] = useState<{ [key: string]: [] }>()\r\n\r\n const submitBehaviorTypes: { [key: string]: string } = {\r\n completedMessage: \"003E077C-0F59-44B3-81EC-525A905CB615\",\r\n redirectUrl: \"99B9DE54-03AC-446D-927F-70C10CD2E2CD\",\r\n }\r\n //#endregion\r\n\r\n //#region set styles\r\n const fonts: { [key: string]: string } = {\r\n Standard: '\"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, \"Tahoma sans-serif\"',\r\n Wide: \"Montserrat, Verdana, sans-serif\",\r\n Narrow: 'Oswald, \"Arial Narrow\", sans-serif',\r\n Friendly: 'Nunito, \"Comic Sans\", sans-serif',\r\n Traditional: '\"PT Serif\", \"Palatino Linotype\", \"Times New Roman\", serif',\r\n }\r\n\r\n const buttonStyle: { [key: string]: string } = {\r\n backgroundColor: form.submitButtonOption.backgroundColor,\r\n color: form.submitButtonOption.fontColor,\r\n border: `1px solid ${form.submitButtonOption.borderColor}`,\r\n borderRadius: \"10px\",\r\n }\r\n //#endregion\r\n\r\n //#region handle captcha change\r\n function handleRecaptchaChange(value: string) {\r\n setRecaptchaToken(value)\r\n }\r\n //#endregion\r\n\r\n //#region handle submit\r\n function handleSubmit(event: FormEvent) {\r\n event.preventDefault()\r\n\r\n //#region prepare request\r\n let arr: customFields[] = []\r\n const request = {\r\n inquiryFormReference: form.inquiryFormReference,\r\n formFields: arr,\r\n sRef: recaptchaToken,\r\n }\r\n\r\n form.formFields.forEach((field) => {\r\n if (field.isVisible) {\r\n var input = document.getElementsByName(field.normalizedName).item(0) as HTMLInputElement\r\n let fieldValue = input.value\r\n\r\n if (field.dataType.isDateTimeType && fieldValue) {\r\n fieldValue = toUtcDateTimeFormat(fieldValue)\r\n } else if (field.dataType.isDateType && fieldValue) {\r\n fieldValue = toUtcDateFormat(fieldValue)\r\n } else if (field.dataType.isBooleanType) {\r\n fieldValue = String(input.checked)\r\n } else if (field.dataType.isDropDown && field.isMultiSelect) {\r\n const selectedOptions = multiSelectValues?.[field.normalizedName] ?? []\r\n fieldValue = \"\"\r\n selectedOptions.forEach((value: string, idx: number) => {\r\n fieldValue = fieldValue + value\r\n if (idx < selectedOptions.length - 1) fieldValue += \",\"\r\n })\r\n }\r\n var inputField = {\r\n customFieldDefinitionReference: field.definitionReference,\r\n value: fieldValue,\r\n isCustomField: field.isCustomField,\r\n normalizedName: field.normalizedName,\r\n displayName: field.displayName,\r\n }\r\n request.formFields.push(inputField)\r\n }\r\n })\r\n //#endregion\r\n\r\n //#region save\r\n run(\r\n client(\"SaveInquiryForm\", { data: request }).then((response) => {\r\n handleResponse(response)\r\n })\r\n )\r\n //#endregion\r\n }\r\n //#endregion\r\n\r\n //#region handle response\r\n function handleResponse(response: any) {\r\n if (response.isSuccessful) {\r\n handleAfterSubmit()\r\n } else if (response.code === \"form_validation\") {\r\n // reset recaptcha\r\n grecaptchaObject?.reset()\r\n const errors: any = {}\r\n response.messages.forEach(({ property, description }: any) => {\r\n errors[property] = description\r\n })\r\n setErrors(errors)\r\n }\r\n }\r\n\r\n function handleAfterSubmit() {\r\n if (isEmbeded) {\r\n setSubmitted(true)\r\n } else {\r\n if (\r\n form.submitOption.afterSubmitBehavior.submitBehaviorReference ===\r\n submitBehaviorTypes.completedMessage\r\n ) {\r\n setSubmitted(true)\r\n } else {\r\n window.open(form.submitOption.afterSubmitBehavior.redirectUrl, \"_self\")\r\n }\r\n }\r\n }\r\n //#endregion\r\n\r\n const handleMultiSelect = (e: any) => {\r\n let temp = { ...multiSelectValues }\r\n temp[e.target.id] = e.value\r\n setMultiSelectValues(temp)\r\n }\r\n\r\n //#region return\r\n return (\r\n
\r\n \r\n\r\n {submitted === false && (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n

\r\n {form.formHeading.primaryHeadingName}\r\n

\r\n

{form.formHeading.secondaryHeadingName}

\r\n
\r\n
\r\n
\r\n\r\n
\r\n {form.formFields.map(\r\n (field) =>\r\n field.isVisible && (\r\n
\r\n \r\n\r\n {field.dataType.isTextType && field.options.length === 0 && (\r\n \r\n )}\r\n {field.dataType.isTextType && field.options.length > 0 && (\r\n m.optionValue)}\r\n popupHeight=\"220px\"\r\n cssClass=\"e-outline custom-input\"\r\n />\r\n )}\r\n {field.dataType.isDropDown && field.isMultiSelect === false && (\r\n \r\n m.optionValue)}\r\n popupHeight=\"220px\"\r\n cssClass=\"e-outline custom-input\"\r\n />\r\n \r\n )}\r\n {field.dataType.isDropDown && field.isMultiSelect && (\r\n m.optionValue)}\r\n popupHeight=\"220px\"\r\n cssClass=\"e-outline custom-input\"\r\n onChange={handleMultiSelect}\r\n />\r\n )}\r\n {field.dataType.isTextAreaType && (\r\n \r\n )}\r\n {field.dataType.isDateType && (\r\n \r\n \r\n \r\n )}\r\n {field.dataType.isDateTimeType && (\r\n \r\n \r\n \r\n )}\r\n {field.dataType.isNumberType && (\r\n \r\n )}\r\n {field.dataType.isDecimalType && (\r\n \r\n )}\r\n {field.dataType.isBooleanType && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {errors[field.normalizedName] && (\r\n
\r\n {\" \"}\r\n {errors[field.normalizedName]}{\" \"}\r\n
\r\n )}\r\n
\r\n )\r\n )}\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n {errors.sRef &&
{errors.sRef}
}\r\n {errors.formFields && (\r\n
{errors.formFields}
\r\n )}\r\n\r\n
\r\n
\r\n {form.showPoweredByFooter && (\r\n \r\n \"fos\"\r\n Powered by{\" \"}\r\n \r\n fleetonstreet.com\r\n \r\n \r\n )}\r\n
\r\n \r\n {form.submitButtonOption.displayName}\r\n {isLoading && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n
\r\n )}\r\n {submitted && (\r\n \r\n )}\r\n
\r\n )\r\n //#endregion\r\n\r\n //#region get border radius\r\n function getBorderRadius(style: string) {\r\n switch (style) {\r\n case \"Standard\":\r\n return \"5px\"\r\n case \"Rounded\":\r\n return \"20px\"\r\n default:\r\n return \"0\"\r\n }\r\n }\r\n //#endregion\r\n}\r\n\r\n//#region date formats\r\nfunction toUtcDateTimeFormat(date: string) {\r\n if (date == null || date === \"undefined\" || date.length <= 0) {\r\n return \"\"\r\n }\r\n const zonedDate = moment(date, \"D MMM YYYY hh:mm aa\")\r\n return moment.utc(zonedDate).format(\"YYYY-MM-DDTHH:mm:ss[Z]\")\r\n}\r\nfunction toUtcDateFormat(date: string) {\r\n if (date == null || date === \"undefined\" || date.length <= 0) {\r\n return \"\"\r\n }\r\n const zonedDate = moment(date, \"D MMM YYYY\")\r\n return moment(zonedDate).format(\"YYYY-MM-DD\")\r\n}\r\n//#endregion\r\n\r\nexport default InquiryForm\r\n","import { useEffect } from \"react\"\r\nimport { useAsync } from \"../../utils/hooks\"\r\nimport { ThreeDots } from \"react-loader-spinner\"\r\nimport NotFoundScreen from \"../not-found/notFoundScreen\"\r\nimport InquiryForm from \"../inquiry-form/inquiryForm\"\r\nimport { client } from \"../../utils/api-client\"\r\nimport { useParams } from \"react-router-dom\"\r\nimport React from \"react\"\r\n\r\nfunction Inquiry() {\r\n //#region variable declaration\r\n const { isLoading, isError, run, data, isSuccess } = useAsync()\r\n //#endregion\r\n\r\n //#region get url paramaters\r\n const params = useParams()\r\n const inquiryFormReference = params.inquiryFormReference\r\n\r\n let isEmbeded = false\r\n\r\n if (params.embeded === \"true\") isEmbeded = true\r\n //#endregion\r\n\r\n //#region get inquiry form\r\n useEffect(() => {\r\n run(client(`GetInquiryForm?inquiryFormReference=${inquiryFormReference}`, {}))\r\n }, [inquiryFormReference, run])\r\n //#endregion\r\n\r\n //#region return\r\n return (\r\n \r\n \r\n {isLoading && !isEmbeded && (\r\n
\r\n \r\n

Loading please wait...

\r\n
\r\n )}\r\n {isError && (\r\n \r\n )}\r\n {isSuccess && data !== null && }\r\n \r\n \r\n )\r\n //#endregion\r\n}\r\n\r\nexport default Inquiry\r\n","import React from \"react\"\r\nimport ReactDOM from \"react-dom/client\"\r\nimport \"./index.css\"\r\n\r\nimport \"./site.css\"\r\nimport { registerLicense } from '@syncfusion/ej2-base';\r\n\r\nimport appConfig from \"../src/config\"\r\nimport { BrowserRouter as Router, Route, Routes } from \"react-router-dom\"\r\nimport NotFoundScreen from \"./components/not-found/notFoundScreen\"\r\nimport Inquiry from \"./components/inquiry/inquiry\"\r\n\r\nregisterLicense(appConfig.syncfusionK)\r\n\r\nconst root = ReactDOM.createRoot(document.getElementById(\"root\"))\r\n\r\nconst App = () => (\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\nroot.render()\r\n"],"names":["module","exports","reactIs","require","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","name","length","prototype","caller","callee","arguments","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","Object","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","concat","targetStatics","sourceStatics","i","key","descriptor","e","b","Symbol","for","c","d","f","g","h","k","l","m","n","p","q","r","t","v","w","x","y","z","a","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","hookCallback","some","hooks","apply","setHookCallback","callback","isArray","input","Array","toString","call","isObject","hasOwnProp","hasOwnProperty","isObjectEmpty","obj","isUndefined","isNumber","isDate","Date","map","arr","fn","res","arrLen","push","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","isNowValid","isNaN","_d","getTime","invalidWeekday","_strict","undefined","bigHour","isFrozen","createInvalid","NaN","fun","this","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","arg","args","argLen","slice","join","Error","stack","deprecations","deprecateSimple","isFunction","Function","set","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","replace","makeFormatFunction","array","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","s","ss","mm","hh","dd","ww","M","MM","yy","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","toLowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","sort","isLeapYear","year","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","value","isFinite","makeGetSet","keepTime","set$1","get","month","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","indexOf","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","min","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","parseInt","getSetYear","getIsLeapYear","createDate","ms","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","charAt","seconds","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","values","data","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","String","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","assign","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","getShim","isRequired","ReactPropTypes","bigint","bool","object","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","ba","encodeURIComponent","ca","Set","da","ea","fa","ha","window","document","createElement","ia","ja","ka","la","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","pa","qa","ra","na","oa","ma","removeAttribute","setAttribute","setAttributeNS","xlinkHref","sa","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ta","ua","va","wa","xa","ya","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","iterator","Ia","Ja","Ka","trim","La","Ma","prepareStackTrace","Reflect","construct","includes","Na","tag","Oa","_context","_payload","_init","Pa","Qa","Ra","nodeName","Ta","_valueTracker","constructor","configurable","enumerable","getValue","setValue","stopTracking","Sa","Ua","checked","Va","activeElement","body","Wa","defaultChecked","defaultValue","_wrapperState","initialChecked","Xa","initialValue","controlled","Ya","Za","$a","ab","ownerDocument","bb","cb","options","selected","defaultSelected","disabled","db","dangerouslySetInnerHTML","children","eb","fb","gb","textContent","hb","ib","jb","kb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","lb","lastChild","nodeType","nodeValue","mb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","nb","ob","pb","style","setProperty","substring","qb","menuitem","area","br","col","embed","hr","img","keygen","link","meta","param","track","wbr","rb","sb","is","tb","ub","target","srcElement","correspondingUseElement","parentNode","vb","wb","xb","yb","zb","stateNode","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","addEventListener","removeEventListener","Kb","onError","Lb","Mb","Nb","Ob","Pb","Qb","Sb","alternate","return","Tb","memoizedState","dehydrated","Ub","Wb","child","sibling","current","Vb","Xb","Yb","unstable_scheduleCallback","Zb","unstable_cancelCallback","$b","unstable_shouldYield","ac","unstable_requestPaint","D","unstable_now","bc","unstable_getCurrentPriorityLevel","cc","unstable_ImmediatePriority","dc","unstable_UserBlockingPriority","ec","unstable_NormalPriority","fc","unstable_LowPriority","gc","unstable_IdlePriority","hc","ic","lc","clz32","mc","nc","log","LN2","oc","pc","qc","rc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","sc","uc","vc","wc","eventTimes","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Map","Lc","Mc","Nc","Oc","delete","pointerId","Pc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Rc","Sc","isDehydrated","containerInfo","Tc","Uc","dispatchEvent","Vc","Wc","Xc","Yc","Zc","ReactCurrentBatchConfig","$c","transition","ad","bd","cd","Qc","stopPropagation","ed","fd","gd","hd","id","jd","keyCode","charCode","kd","ld","md","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","rd","sd","td","nd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","od","pd","view","detail","qd","vd","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","ud","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","wd","yd","dataTransfer","Ad","Cd","animationName","elapsedTime","pseudoElement","Dd","clipboardData","Ed","Gd","Hd","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Id","Jd","Alt","Control","Meta","Shift","Kd","Ld","fromCharCode","code","repeat","which","Md","Od","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Qd","touches","targetTouches","changedTouches","Sd","Td","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Ud","Vd","Wd","Xd","documentMode","Yd","Zd","$d","ae","be","ce","de","ge","color","email","password","range","search","tel","text","url","he","ie","je","event","listeners","ke","le","me","ne","oe","pe","qe","re","se","te","ue","oninput","ve","detachEvent","we","xe","attachEvent","ye","ze","Ae","Ce","De","Ee","Fe","nextSibling","Ge","contains","compareDocumentPosition","He","HTMLIFrameElement","contentWindow","href","Ie","contentEditable","Je","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","animationend","animationiteration","animationstart","transitionend","Se","Te","Ue","animation","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","ff","gf","hf","Rb","instance","listener","F","jf","has","kf","lf","mf","random","nf","bind","capture","passive","C","B","of","pf","parentWindow","qf","rf","O","T","za","ee","char","fe","unshift","sf","tf","uf","vf","wf","xf","yf","__html","zf","setTimeout","Af","clearTimeout","Bf","Promise","Df","queueMicrotask","resolve","then","catch","Cf","Ef","Ff","Gf","previousSibling","Hf","If","Jf","Kf","Lf","Mf","Nf","Of","G","H","Pf","I","Qf","Rf","Sf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Tf","Uf","Vf","Wf","getChildContext","Xf","__reactInternalMemoizedMergedChildContext","Yf","Zf","$f","ag","bg","dg","eg","fg","hg","ig","jg","kg","lg","_currentValue","mg","childLanes","ng","dependencies","firstContext","lanes","og","pg","context","memoizedValue","qg","rg","sg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","interleaved","effects","tg","ug","eventTime","lane","payload","vg","J","mode","K","wg","xg","yg","zg","Ag","Bg","Component","refs","Cg","Fg","isMounted","_reactInternals","enqueueSetState","Dg","Eg","enqueueReplaceState","enqueueForceUpdate","Gg","shouldComponentUpdate","isPureReactComponent","Hg","state","updater","Ig","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Jg","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","N","Zg","$g","ah","deletions","bh","pendingProps","treeContext","retryLane","ch","dh","eh","fh","memoizedProps","gh","ih","ref","_owner","_stringRef","jh","kh","lh","mh","nh","oh","implementation","ph","qh","done","rh","sh","uh","vh","wh","xh","yh","tagName","zh","Ah","Bh","P","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","Q","R","S","Ih","Jh","Kh","Lh","U","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","di","lastEffect","stores","ei","fi","gi","create","destroy","deps","hi","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","zi","message","Ai","error","Li","Ni","Oi","Bi","WeakMap","Ci","Di","Ei","Fi","componentDidCatch","Gi","componentStack","Hi","pingCache","Ii","Ji","Ki","Pi","tailMode","tail","V","subtreeFlags","Qi","pendingContext","Ri","wasMultiple","multiple","onClick","onclick","size","createElementNS","autoFocus","createTextNode","Si","rendering","Ti","renderingStartTime","isBackwards","last","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","bj","cj","dj","baseLanes","cachePool","ej","fj","gj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","hj","ij","jj","kj","lj","mj","fallback","nj","oj","pj","qj","_reactRetry","rj","sj","tj","uj","vj","xj","yj","zj","Aj","WeakSet","X","Bj","Cj","Dj","Ej","Gj","Hj","Ij","Jj","onCommitFiberUnmount","componentWillUnmount","Kj","Lj","Mj","Nj","Oj","Pj","Qj","insertBefore","_reactRootContainer","Rj","Sj","Tj","Xj","Yj","Zj","ak","__reactInternalSnapshotBeforeUpdate","src","Wj","Lk","bk","ck","dk","ek","Y","Z","fk","gk","hk","ik","jk","Vj","Infinity","kk","lk","mk","nk","ok","pk","qk","rk","sk","tk","callbackNode","expirationTimes","expiredLanes","tc","callbackPriority","cg","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","finishedWork","finishedLanes","Fk","timeoutHandle","Gk","Hk","Ik","Jk","Kk","mutableReadLanes","xc","Fj","display","Uj","onCommitFiberRoot","jc","onRecoverableError","Mk","onPostCommitFiberRoot","Nk","Ok","Qk","isReactComponent","pendingChildren","Rk","mutableSourceEagerHydrationData","Sk","cache","transitions","Tk","Uk","Vk","Wk","Xk","Yk","Zk","wj","Pk","al","reportError","bl","_internalRoot","cl","dl","el","fl","hl","gl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","il","usingClientEntryPoint","Events","jl","findFiberByHostInstance","bundleType","rendererPackageName","kl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","ll","isDisabled","supportsFiber","inject","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","__self","__source","jsx","jsxs","setState","forceUpdate","escape","_status","_result","default","Children","count","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","writable","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","method","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","reject","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","TypeError","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","iter","reverse","pop","skipTempReset","prev","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","globalThis","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","__esModule","definition","nmd","paths","uid","isBlazorPlatform","createInstance","classFunction","params","arrayParam","nameSpace","splits","fromObj","isNullOrUndefined","deleteObject","containerObject","merge","destination","temrObj","tempProp","keys_1","copied","first","deep","_loop_1","arguments_1","obj1","copy","isArrayChanged","blazorEventExtend","isBlazor","Event","getUniqueID","definedName","compareElementParent","parent","throwError","formatUnit","HijriParser","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","propKeys_1","getSymbolRegex","regexStr","str","getSymbolMatch","matchKeys_1","constructRegex","convertValueParts","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","cur","digits","numericPair","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","mapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","dateCorrection","getHijriDate","gDate","tMonth","tYear","yPrefix","julilanOffset","julianNumber","tempMonth","modifiedJulianDate","iyear","cyc","iy","im","tempDay","iln","hYear","hmonth","hDate","toGregorian","julianDate","gDay","gMonth","gYear","abbreviateRegexGlobal","standalone","weekdayKey","timeSetter","datePartMatcher","DateFormat","culture","option","cldr","_this","dependable","numObject","dateObject","formatOptions","isIslamic","isServerRendered","resPattern","skeleton","dateSeperator","pattern","numMapper","parser","parserObject","patternMatch_1","designator","eText","timeZone","intDateFormatter","dObject","getCurrentDateValue","matches_1","length_1","curval","curvalstr","processNumber","curstr","curlength","desig","getHours","dec","retu","timezone","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","checkTwodigitNumber","tVal","curPattern","no","ishour","errorText","NumberFormat","numberFormatter","symbolPattern","fOptions","cOptions","dOptions","numericObject","numberMapper","currencySymbol","currency","defaultCurrencyCode","altSymbol","percentSymbol","minusSymbol","symbols","isCurrency","isPercent","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","maximumFractionDigits","minimumFractionDigits","fractionDigits","useGrouping","nData","pData","groupSeparator","groupData","getGroupingDetails","minimumFraction","mval","maximumFraction","mfrac","lfrac","intNumberFormatter","lastIndexOf","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","curData","zeroData","fValue","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","toExponential","groupNumbers","nlead","nend","toPrecision","level1","sep","decimalSymbol","level2","flag","lead","latnRegex","DateParser","dateParser","numOptions","parseOptions","hourOnly","regexString","evalposition","patternMatch","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","numbers","canUpdate","charKey","optional","weekData","weekObject","monthData","hour12","periodValur","tzone","hpattern","parseTimeZoneRegx","parserRegex","internalDateParse","dobj","tDate","ystrig","is2DigitYear","getDateObject","setMilliseconds","tKeys_1","tValue","setDate","pDate","lDate","setHours","tzValue","setMinutes","getMinutes","num","retOptions","props_1","curObject","matchString","internalNumberParser","tmatch","getZoneValue","splitStr","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","custom","symbolpattern","symbolRegex","infinity","getParsedNumber","isNegative","tempValue","exponent","convertMaxFracDigits","decimalSplitValue","Observer","ranArray","boundedEvents","on","handler","cntxt","notExist","isHandlerPresent","off","indexLocation","notify","argument","successHandler","errorHandler","blazorCallback","curObject_1","objs","isTrigger","obj_1","promise","isJson","parse","dateReviver","boundedEvents_1","onIntlChange","rightToLeft","cldrData","defaultCulture","Internationalization","cultureName","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","formatDate","parseDate","parseNumber","getDatePattern","isExcelFormat","IntlBase","getNumberPattern","isExcel","getFirstDayOfWeek","getNumericObject","numSystem","symbPattern","getDefaultDateObject","blazorCultureFormats","negativeDataRegex","customRegex","latnParseRegex","fractionRegex","defaultCurrency","patternRegex","dateConverterMapper","islamicRegex","firstDayMapper","formatRegex","currencyFormatRegex","curWithoutNumberRegex","typeMapper","getResultantPattern","blazorCulture","iType","compareBlazorDateFormats","basicPatterns","dPattern","tPattern","getDependables","calendartype","blazorDefaultObject","defaultObject","dateString","getSymbolPattern","ConvertDateToWeekFormat","convertMapper","tempString","curFormatMapper","getProperNumericSkeleton","patternMatcher","getFormatData","needFraction","cSymbol","fractionOnly","changeCurrencySymbol","groupPattern","fraction","fmatch","sym","getCurrencySymbol","currencyCode","customNumberFormat","integerPart","spaceCapture","spaceGrouping","fractionPart","isCurrencyPercent","actual","part","fractionDigitsPattern","minDigits","maxDigits","minimumIntegerPattern","integer","groupingPattern","dateParseRegex","monthIndex","customFormat","formatSplit","getDateSeparator","dateObj","getActualDateTimeFormat","actualPattern","tLength","timeZonePattern","options_1","getActualNumberFormat","minFrac","numrericObject","curMatch","curCode","hasNegativePattern","cPattern","processSymbol","getWeekData","firstDay","iCulture","replaceBlazorCurrency","aCurrency","rCurrency","iCurrency","pData_1","getWeekOfYear","weeknum","newYear","daynum","nday","headerRegex","Ajax","contentType","emitError","send","eventArgs","cancel","httpRequest","XMLHttpRequest","onreadystatechange","stateChange","onLoad","onload","onProgress","onprogress","onAbort","onabort","onerror","onUploadProgress","upload","open","setRequestHeader","beforeSend","onSuccess","failureHandler","reason","onFailure","responseText","dataType","readyState","status","statusText","getResponseHeader","responseHeaders","header","headers","getAllResponseHeaders","REGX_MOBILE","REGX_IE","REGX_IE11","REGX_IOS","REGX_IOS7","REGX_ANDROID","REGX_WINDOWS","REGX_VERSION","REGX_BROWSER","OPERA","EDGE","CHROME","PANTHOMEJS","SAFARI","WEBKIT","MSIE","MOZILLA","browserDetails","Browser","extractBrowserDetail","browserInfo","clientInfo","userAgent","language","getEvent","events","isPointer","isTouch","isDevice","move","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","regX","platform","maxTouchPoints","uA","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","eventName","bindTo","intDebounce","debounceListener","eventData","eventFunction","later","debounce","isIE","remove","clearEvents","copyData","trigger","eventProp","eventData_1","event_1","SVG_REG","className","styles","attrs","attributes","addClass","elements","classes","classList","getClassList","ele","_b","classList_1","curClass","removeClass","classList_2","classArr","isVisible","visibility","offsetWidth","prepend","fromElements","isEval","docFrag","createDocumentFragment","firstElementChild","executeScript","append","script","head","detach","iKey","select","selector","needsVDOM","querySelectId","querySelector","selectAll","charRegex","idList","list","splitId","setId","closest","setStyleAttribute","addClasses","removeClasses","msMatchesSelector","webkitMatchesSelector","isColEName","Base","isRendered","isComplexArraySetter","allowServerDataBinding","isProtectedOnChange","changedProperties","oldProperties","bulkChanges","refreshing","ignoreCollectionWatch","finalUpdate","childChangedProperties","modelObserver","addInstance","setProperties","isDestroyed","muteOnChange","prevDetection","dataBind","serverDataBind","callChildDataBind","clearChanges","newChanges","oldChanges","onPropertyChanged","updateModel","saveChanges","newValue","oldValue","unbind","Uint16Array","msCrypto","crypto","getRandomValues","combineArray","messageHandler","moduleClass","getModuleName","ej2_instances","getObject","curKey","propertyGetter","propertySetter","oldVal","complexGetter","complexSetter","Property","propertyDescriptor","addPropertyCollection","Complex","eventDescriptor","finalContext","getParentContext","NotifyPropertyChanges","classConstructor","propertyType","propList","complexProps","colProps","propNames","complexPropNames","colPropNames","eventNames","curText","__extends","extendStatics","__","__decorate","decorators","desc","decorate","Animation","_super","easing","ease","linear","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","animate","getModel","elements_1","element_1","delayAnimation","animationId","getAttribute","frameId","cancelAnimationFrame","applyAnimation","step","timerId","prevTimeStamp","startAnimation","begin","avg","timingFunction","progress","requestAnimationFrame","fail","newProp","oldProp","rippleEffect","rippleOptions","rippleModel","ignore","rippleFlag","isCenterRipple","getRippleModel","isRippleEnabled","rippleHandler","rippleUpHandler","rippleLeaveHandler","getBoundingClientRect","offsetX","offsetY","right","bottom","radius","sqrt","diameter","rippleElement","getComputedStyle","getPropertyValue","transform","removeRipple","rippleElements","getElementsByClassName","ModuleLoader","loadedModules","requiredModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","modName","member","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","modules","usedModules","removableModule_1","ChildProperty","parentObj","controlParent","isParentArray","updateChange","updateTimeOut","changeTime_1","curIndex","restrictServerDataBind","isSaveChanges","parent_1","parentKey","getParentKey","complexKeys","isFinal","valueLength","bypassKey","LicenseValidator","isValidated","errors","noLicense","trailExpired","versionMismatched","platformMismatched","invalidKey","manager","licKey","setKey","getKey","validate","convertToChar","validateMsg","getInfoFromKey","result_1","invalidPlatform","expiryDate","expDate","currDate","errorDiv","getDecryptedData","atob","licKeySplit","pkey","decryptedStr","resultArray","licKeySplit_1","lKey","decodeStr","buffr","charCodeAt","licenseValidator","cArr","cArr_1","registerLicense","lastPageID","componentCount","lastHistoryLen","versionBasedStatePersistence","randomId","uniqueID","isStringTemplate","needsID","isReactHybrid","enableRtl","moduleLoader","localObserver","detectFunction","appendTo","enablePersistence","setPersistData","refresh","preRender","injectModules","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","localStorage","getItem","ej2StatePersistenceVersion","mergePersistData","inst","renderComplete","wrapperElement","event_2","getInjectedModules","injectedModules","Inject","isVDOM","triggerStateChange","currentContext","calls","setItem","getPersistData","renderReactTemplates","clearTemplate","templateName","isHistoryChanged","pageID","history","hash","addOnPersist","persistObj","objValue","getActualProperties","ignoreOnPersist","iterateJsonProperties","ignoreList","newObj","newList","this_1","defaultPosition","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","padding","diffX","prevLeft","prevTop","dragProcessStarted","eleTop","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","scope","isUnWire","enableTapHold","mobileInitialize","initialize","evt","removeTapholdTimer","tapHoldThreshold","getScrollableParent","axis","tempScrollHeight","scrollHeight","tempScrollWidth","scrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abort","abortSelectors","intCoord","getCoordinates","initialPosition","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","isChangeTouch","intCordinate","styleProp","margin","marginLeft","marginTop","marginRight","marginBottom","dragTarget","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","position","getMousePosition","isDragScroll","distance","getHelperElement","dragTargetElement","helperElement","parentClientRect","offsetParent","dragStart","getProperTargetElement","bindEvents","bindDragEvents","dragElement","dragArea","setDragArea","enableTailMode","enableScrollHandler","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","offsetTop","offsetLeft","offsetHeight","pageYOffset","pageXOffset","innerHeight","innerWidth","queryPositionInfo","rect","docHeight","getDocumentWidthHeight","docWidth","drag","eleObj","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","helper","tLeft","tTop","pagex","pagey","dLeft","dTop","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","tempDraEleTop","dragValue","enableAutoScroll","scrollIntoView","intOut","docBody","docEle","dragStop","dragStopCalled","intDrop","change","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","pointerEvents","elementFromPoint","oldEle","isdragscroll","dragEle","isOffsetParent","cursorAt","sender","draggable","draggedElement","dropIns","getDropInstance","parentElement","drop","eleInst","eleInst_1","Droppable","mouseOver","wireEvents","accept","isDrag","isDropArea","canDrop","droppedElement","coord","KeyboardEvents","keyPressHandler","isAltKey","isCtrlKey","isShiftKey","curkeyCode","keyConfigs","configCollection_1","rconfig","rKeyObj","KeyboardEvents_1","getKeyConfigData","keyAction","unwireEvents","configCache","keyData","Number","getKeyCode","keyVal","L10n","controlName","localeStrings","setLocale","intLocale","intGetControlConstant","currentLocale","load","localeObject","getConstant","SwipeSettings","swipeRegex","LINES","Touch","touchAction","tapCount","startEvent","point","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","cancelEvent","movedPoint","eScrollArgs","calcScrollPoints","startEvents","originalEvent","startX","startY","distanceX","distanceY","scrollDirection","velocity","getVelocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","endPoint","calcPoints","swipeArgs","swipeDirection","eSwipeArgs","tDistance","swipeSettings","swipeThresholdDistance","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","eleStyle","overflowX","overflowY","eTapArgs","pnt","newX","newY","newT","xDist","yDist","interval","QUOTES","IF_STMT","ELSEIF_STMT","ELSE_STMT","FOR_STMT","IF_OR_FOR","CALL_FUNCTION","NOT_NUMBER","WORD","DBL_QUOTED_STR","WORDIF","exp","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","compile","template","ignorePrefix","argName","evalExpResult","varCOunt","localKeys","isClass","singleSpace","cnt","matchStr","SPECIAL_CHAR","rlStr","addNameSpace","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","splRegexp","arrObj","SlashReplace","NameSpaceForspecialChar","evalExp","addNS","tempStr","nameSpaceNew","quotes","NameSpaceArrObj","HAS_ROW","HAS_SVG","blazorTemplates","templateString","compiler","engineObj","templateId","root","blazorTemplateId","blazorId","childNodes","Engine","removeTags","removeAttrs","attribute","jsEvents","SanitizeHtmlHelper","beforeSanitize","selectors","tags","sanitize","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","nodes","localName","attr","hasAttribute","syncfusionK","_arrayLikeToArray","_s","_e","_arr","_n","minLen","NavigationContext","React","LocationContext","RouteContext","outlet","invariant","cond","matchRoutes","routes","locationArg","basename","pathname","stripBasename","parsePath","branches","flattenRoutes","siblings","every","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","parentsMeta","parentPath","route","relativePath","path","caseSensitive","startsWith","joinPaths","computeScore","paramRe","isSplat","segments","initialScore","reduce","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","paramNames","regexpSource","_","paramName","endsWith","compilePath","captureGroups","splatValue","decodeURIComponent","safelyDecodeURIComponent","nextChar","useInRouterContext","useLocation","_renderMatches","parentMatches","reduceRight","React.createElement","Route","_props","Router","basenameProp","locationProp","navigationType","NavigationType","static","staticProp","navigationContext","trailingPathname","Routes","routeMatch","parentParams","parentPathnameBase","locationFromContext","parsedLocationArg","_parsedLocationArg$pa","useRoutes","createRoutesFromChildren","BrowserRouter","historyRef","createBrowserHistory","listen","title","isEmbeded","viewBox","fill","fillRule","stroke","strokeLinecap","strokeLinejoin","_defineProperty","ownKeys","enumerableOnly","_objectSpread2","getOwnPropertyDescriptors","defineProperties","defaultInitialState","useAsync","initialState","initialStateRef","safeSetState","mounted","useSafeDispatch","setData","setError","run","isIdle","isLoading","isError","isSuccess","__assign","getDefaultStyle","visible","getViewBoxSize","secondaryStrokeWidth","maxStrokeWidth","startingPoint","endpoint","_c","secondaryColor","ariaLabel","wrapperStyle","wrapperClass","_g","_h","strokeWidthSecondary","xmlns","cx","cy","dur","repeatCount","calcMode","wrapperInitialize","WRAPPER","role","ejInstance","rippleMouseHandler","rippleSpan","createEvent","initEvent","CHECK","DISABLED","FRAME","INDETERMINATE","LABEL","RIPPLE","RIPPLECHECK","RIPPLEINDETERMINATE","RTL","containerAttr","CheckBox","isFocused","isMouseClick","clickTriggered","changeState","ariaState","frameSpan","getWrapper","indeterminate","clickHandler","focusOutHandler","changeEventArgs","updateVueArrayModel","wrapper","unWireEvents","focusHandler","initialCheckedValue","isVue","setDisabled","initWrapper","proxy","label","cssClass","labelPosition","setText","keyUpHandler","labelMouseDownHandler","labelMouseUpHandler","rippleElem","labelWrap","getElementsByTagName","updateHtmlAttributeToWrapper","enableHtmlSanitizer","changeHandler","formResetHandler","formElem","init","htmlAttributes","click","focusIn","defaulthtmlkeys","delayUpdate","ComponentBase","attrKeys","cachedTimeOut","isAppendCalled","initRenderCalled","isReactForeceUpdate","isReact","isshouldComponentUpdateCalled","refreshChild","canDelayUpdate","renderReactComponent","portals","refreshProperties","reactElement","nextProps","updateProperties","silent","dProps","propkey","isClassName","htmlattributes","compareValues","clsName","propsClsName","dpropsClsName","processComplexTemplate","compTemplate","complexTemplate","PropVal","getDefaultAttributes","propKeys","controlAttributes","reactUid","clsList","onChange","syntheticEvent","value1","value2","tempVal","tempVal2","compareObjects","oldProps","newProps","diffArray","keys_2","_j","checkInjectedModules","prevModule","curModule_1","getInjectedServices","directivekeys","changedProps","directiveValue","validateChildren","skipRefresh","prevProperties","dKeys","compareOutput","_c1","allColumns","propInstance","changedProps_1","changes","propInstance_1","appendReactElement","container","ReactDOM","templateNames","tempPortal","indexCount","propIndexCount","portal","childCache","childs_1","ifield","getChildType","childProps","getChildProps","isDirective","moduleName","subChild","subChild_1","accessProp","cacheVal","cachedValue","childs_2","isService","services","applyMixins","derivedClass","baseClass","classObj","ComplexBase","stringCompiler","templateElement","cEle","actTemplate","actData","isLegacyTemplate","rele","elementRect","popupRect","parentDocument","CheckBoxComponent","immediateRender","targetContainer","fixedParent","calculatePosition","currentElement","positionX","positionY","targetValues","posX","posY","setPosx","getElementHCenter","setPosy","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","updatePosition","getBodyScrollTop","getBodyScrollLeft","popupWidth","isCollide","viewPortElement","elemOffset","yAxis","topCollideCheck","xAxis","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","flip","tEdge","TL","TR","BL","BR","eEdge","oldVisibility","removeProperty","edge","updateElementData","setPosition","leftFlip","topFlip","setPopup","eStatus","ContainerLeft","ContainerRight","deepCheck","collideSide","ContainerTop","ContainerBottom","getTargetContainerWidth","getTargetContainerHeight","getTargetContainerLeft","getTargetContainerTop","getViewPortWidth","getViewPortHeight","windowWidth","documentReact","PositionData","CLASSNAMES","Popup","setEnableRtl","refreshPosition","setContent","actionOnScroll","wireScrollEvents","unwireScrollEvents","resolveCollision","checkCollision","orientationOnChange","getRelateToElement","scrollRefresh","parent_2","relateToElement","relateTo","hide","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollElement","scrollParents","parent_3","isElementVisible","checkGetBoundingClientRect","win","windowView","scrollY","scrollX","outerWidth","outerHeight","elementView","parent_4","reposition","content","relateToElem","collision","checkFixedParent","parentDisplay","getAnchorPosition","anchorEle","eleRect","anchorRect","anchorPos","fixedElement","tempAnchor","calculateRelativeBasedPosition","targetType","callFlip","callFit","elemData","containerWidth","containerLeft","containerRight","overLeft","overRight","containerHeight","containerTop","containerBottom","overTop","overBottom","fit","viewPortRect","horz","vert","show","animationOptions","relativeElement","zIndexElement","parentZindex","childrenZindex","isEqualNode","siblingsZindex","finalValue","currentZindexValue","getZindexPartial","showAnimation","hideAnimation","overflowRegex","parentStyle","Input","floatType","isBindClearAction","bindInitialEvent","checkInputValue","floatLabelType","getParentNode","inputElement","inputValue","_focusFn","_blurFn","wireFloatingEvents","createFloatingInput","internalCreateElement","makeElement","createInputContainer","customTag","floatLinelement","floatLabelElement","placeholder","innerText","encodePlaceHolder","inputWrap","updateLabelState","checkFloatLabelType","updateIconState","wireClearBtnEvents","readOnly","validateLabel","tagClass","spanEle","setCssClass","oldClass","setPlaceholder","setReadonly","isReadonly","readonly","isRtl","setEnabled","isEnable","inputContainer","disabledAttrs","considerWrapper","removeAttributes","addAttributes","setClearButton","isClear","initial","clearButton","insertAdjacentElement","createClearButton","_internalRipple","isRipple","argsButton","_onMouseDownRipple","_onMouseUpRipple","parentEle","createIconEle","iconClass","prependSpan","innerWrapper","appendSpan","validateInputType","containerElement","createInput","bindClearAction","showClearButton","enabled","setPropertyValue","setWidth","removeFloating","inputEle","addFloating","iconEle","inputObj","isPrependIcon","floatLine","floatText","setRipple","addIcon","icons","internalCreate","result_2","OTHERMONTH","OTHERDECADE","ROOT","DEVICE","DECADE","ICON","OVERLAY","WEEKNUMBER","SELECTED","FOCUSEDDATE","OTHERMONTHROW","TODAY","LINK","CELL","ZOOMIN","DAYHEADERLONG","dayMilliSeconds","CalendarBase","effect","isPopupClicked","isDateSelected","isTodayClicked","preventChange","isAngular","rangeValidation","calendarEleCopy","cloneNode","calendarMode","setSeconds","globalize","todayDisabled","todayDate","tabIndex","calendarElement","createHeader","createContent","getDefaultKeyConfig","defaultKeyConfigs","controlUp","controlDown","moveDown","moveUp","moveLeft","moveRight","home","pageUp","pageDown","shiftPageUp","shiftPageDown","controlHome","controlEnd","altUpArrow","spacebar","altRightArrow","altLeftArrow","validateDate","checkDateValue","checkValue","setOverlayIndex","popupWrapper","popupElement","modal","minMaxUpdate","headerElement","iconContainer","previousIcon","nextIcon","headerTitleElement","adjustLongHeaderSize","contentElement","table","createContentHeader","createContentBody","showTodayButton","createContentFooter","getCultureValues","cldrObj","culShortNames","dayFormat","dayHeaderFormat","getCultureObjects","toCapitalize","html","tableHeadElement","weekNumber","shortNames","shiftArray","renderYears","renderDecades","renderMonths","updateFooter","todayElement","l10","minimum","maximum","today","footer","todayButtonClick","keyConfig","navigateTitle","keyboardModule","keyActionHandle","dateWireEvents","serverModuleName","isCustomDate","currentView","depth","getViewNumber","navigateTo","resetCalendar","tableBodyElement","renderDayCellArgs","multiSelection","selectedDate","focusedDate","depthValue","levelRestrict","keyboardNavigate","selectDate","contentClick","addMonths","addYears","isMonthYearRange","addDay","isMinMaxRange","navigatePreviousHandler","navigatePrevious","navigateNextHandler","navigateNext","navigateHandler","triggerNavigate","minMaxDate","localDate","minDate","maxDate","tdEles","numCells","renderDays","islamicModule","islamicRenderDays","renderTemplate","islamicRenderTemplate","isTodayDate","currentMonth","titleUpdate","getSeconds","getMilliseconds","setStartDate","weekEle","weekAnchor","numberOfDays","weekRule","finalDate","getWeek","dateFormatOptions","tdEle","dayCell","dayLink","isOutOfRange","renderDayCellEvent","argsDate","otherMnthBool","disabledCls","getDateVal","updateFocus","otherMonth","tableElement","removeTableHeadElement","valueUtil","curDate","mon","yr","curYrs","minYr","minMonth","maxYr","maxMonth","localMonth","localYr","startYr","endYr","startFullYr","endFullYr","startHdrYr","endHdrYr","startYear","rowIterator","collection","lastDate","timeOffset","findLastDay","classNm","trEle","row","otherMonthCell","iconHandler","islamicIconHandler","setAriaActiveDescendant","clickEventEmitter","eve","getIdValue","islamicDate","getIslamicDate","switchView","validateValues","checkView","copyValues","skipIndex","tempValueString","minFormatOption","minString","maxFormatOption","maxString","setValueUpdate","dayFormatOptions","monthFormatOptions","setActiveDescendant","focusedEle","selectedEle","previousIconHandler","compareMonth","nextIconHandler","compareYear","compareDecade","stringVal","previous","islamicPrevious","islamicNext","gregorianFormat","islamicFormat","tzOffset","tzOffsetDiff","getMaxDays","setDateDecade","setDateYear","checkPresentDate","tempElement","selectedElement","previousValue","checkPrevious","navigatedEvent","navigatedArgs","startDate","endDate","modifier","column","findNextTD","rangeValue","tmpDate","inValue","toUTCString","toLocaleString","Calendar","isMultiSelection","tempValues","copyDate","previousValues","setEnable","setClass","setTimeZone","serverTimezoneOffset","enable","newCssClass","oldCssClass","isDayLightSaving","secondOffset","firstOffset","offsetValue","timeZoneDiff","changedArgs","generateTodayVal","todayButtonEvent","triggerChange","previousDate","previousDateTime","isMultiSelect","tempDays","islamicRenderYears","islamicRenderDecade","storeView","update","tempDate","addDate","tempDates","removeDate","setTodayDate","changeEvent","isInteracted","POPUPWRAPPER","INPUTFOCUS","ERROR","ACTIVE","OVERFLOW","NONEDIT","DatePicker","previousElementValue","isDateIconClicked","isAltKeyPressed","invalidValueString","checkPreviousValue","maskedDateValue","isIconClicked","isDynamicValueChanged","datepickerOptions","updateInput","setAllowEdit","allowEdit","inputWrapper","checkInvalidValue","enableMask","updateInputValue","inputValueCopy","ariaAttrs","l10nLocale","l10n","updatedCssClassValues","INPUTWRAPPER","isDynamic","isCalendar","disabledDates","strictMode","minMaxUpdates","dateValue","tempFormat","formatString","dateTimeFormat","errorClass","checkStringValue","returnDate","formatDateTime","valueDate","valueString","basicISOString","bindInputEvent","inputHandler","dateIconHandler","mouseUpHandler","inputFocusHandler","inputBlurHandler","keydownHandler","inputChangeHandler","resetHandler","formElement","resetFormHandler","keyboardModules","inputKeyActionHandle","popupObj","unBindEvents","restoreValue","bindClearEvent","clear","clearedArgs","popupUpdate","preventEventBubbling","interopAdaptor","invokeMethodAsync","blur","updatedClassValues","setStyle","updateHtmlAttributeToElement","updateCssClass","calendarKeyActionHandle","focusArguments","openOnFocus","strictModeUpdate","changeTrigger","blurArguments","calendarKeyboardModules","documentHandler","focusOut","clickedView","defaultAction","targetdate","dateOptions","createCalendar","modelHeader","close","preventArgs","setAriaAttributes","targetExitViewport","setAriaDisabled","yearHeading","h2","daySpan","monthSpan","selectCalendar","prevent_1","outOfRange","mobilePopupWrapper","popup","openAnimation","prevent_2","closeEventCallback","prevent","outerHTML","triggerEvent","inputElementCopy","ensureInputAttribute","ngTag","validationAttribute","checkHtmlAttributes","altDownArrow","enter","shiftTab","tab","nameAttribute","checkFormat","skeletonString","dynamic","attributes_1","valueCopy","previousValCopy","inputVal","dateIdString","isDisabledDate","dayOfTheWeek","DatePickerComponent","ListBase","ARROWLEFT","ARROWDOWN","SHIFTTAB","END","HOME","MaskedDateTime","mask","defaultConstant","hiddenMask","validCharacters","isDayPart","isMonthPart","isYearPart","isHourPart","isMinutePart","isSecondsPart","isMilliSecondsPart","monthCharacter","periodCharacter","isHiddenMask","isComplete","isNavigate","isDeletion","isShortYear","isDeleteKey","isDateZero","isMonthZero","isYearZero","dayTypeCount","monthTypeCount","hourTypeCount","minuteTypeCount","secondTypeCount","dateformat","getCulturedFormat","maskDateValue","createMask","validCharacterCheck","maskInputHandler","maskKeydownHandler","clearHandler","maskPlaceholder","getCUltureMaskFormat","formatCheck","previousHiddenMask","setDynamicValue","objectString","setSelection","updateValue","validChar","setSelectionRange","navigateSelection","dateAlteration","differenceCheck","previousVal","newVal","newDateValue","handleDeletion","monthString","getCulturedValue","monthValue","monthValue_1","previousMaxDate","currentMaxDate","periodString","periodkeys","formattext","daysAbbreviated","dayKeyAbbreviated","daysWide","dayKeyWide","daysNarrow","dayKeyNarrow","monthAbbreviated","monthWide","zeroCheck","roundOff","hiddenChar","isbackward","formatIndex","valueText","isZero","resultValue","isSegment","isDecrement","formatText","incrementValue","newMonth","cldrTimeFormat","consts","GroupGuid","Adaptor","ds","requestType","sortBy","skip","group","take","where","aggregates","expand","dataSource","pvt","processResponse","query","xhr","JsonAdaptor","processQuery","dataManager","page","json","countFlg","lazyLoad","keyCount","agg","queries","lazyLoadData","lazyLoadGroup","isCountRequired","getAggregate","onDemandGroupInfo","fieldName","DataUtil","comparer","onPage","formGroupResult","req","onWhere","level","aggQuery","Query","filterQueries","batchRequest","dm","deletedRecordsLen","deletedRecords","addedRecords","insert","changedRecords","onAggregates","onSearch","fieldNames","getFieldList","searchKey","ignoreCase","ignoreAccent","onSortBy","fnCompare","fnSort","onGroup","pageSize","pageIndex","onRange","onTake","nos","onSkip","onSelect","tableName","keyField","UrlAdaptor","hierarchyFilters","getQueryRequest","singles","filterQueryLists","request","sorts","groups","filters","searches","callAdaptorFunction","getFiltersFrom","toJson","isNull","fields","operator","getRequestQuery","reqParams","jsonDateReplacer","pvtData","convertToQueryString","request1","fromTable","distincts","selects","expands","handleTimeZone","timeZoneHandling","parseJson","requests","groupDs","isExpand","formRemoteGroupedData","getAggregateResult","childLevel","items","getGroupedRecords","hasRecords","childGroupedRecords","original","batchUrl","crudUrl","removeUrl","changed","added","deleted","getAddParams","insertUrl","keyColumn","updateUrl","fKey","pKey","predicats","Predicate","or","aggregateData","aggregate","isServerGrouping","groupQuery","addParams","ODataAdaptor","multipartAccept","batch","changeSet","batchPre","contentId","batchContent","changeSetContent","batchChangeSetContentType","updateType","onPredicate","predicate","requiresCast","guid","getField","replacer","isGuid","odBiOperator","odUniOperator","odv4UniOperator","onComplexPredicate","predicates","onEachWhere","condition","isComplex","onEachSearch","onEachSort","onCount","settings","overrideMimeType","metaCheck","rootUrl","dataUrls","resourceTableName","dataCopy","results","metaData","emptyAndBatch","processBatchResponse","versionCheck","requiresFormat","keys_4","localTimeReplacer","convertObj","dateParse","toLocalTime","localTime","compareAndRemove","initialGuid","getGuid","cid","cSet","generateInsertRequest","generateUpdateRequest","generateDeleteRequest","stat","generateBodyContent","org","cIdx","jsonObj","exVal","changeGuid","isPlainObject","RemoteSaveAdaptor","ODataV4Adaptor","onExpand","expanded","exArr","sel","close_1","combineVal","expandQueryIndex","idx","ex","onDistinct","distinctFields","metaName","dataUrl","dataCount","WebApiAdaptor","host","_loop_2","_loop_3","Count","Items","WebMethodAdaptor","updateKey","CustomDataAdaptor","getData","addRecord","updateRecord","deleteRecord","batchUpdate","CacheAdaptor","GraphQLAdaptor","opt","schema","response","getVariables","getQuery","datamanager","urlQuery","vars","variables","resData","inserted","generateCrudData","bData","crudData","parsed","getMutation","adaptor","isCrudAction","isInsertAction","cacheAdaptor","guidId","setInterval","forDel","currentTime","requestTime","removeItem","generateKey","currentFilter","newQuery","cachedItems","crossDomain","DataManager","offline","timeTillExpiration","cachingPageSize","enableCaching","jsonp","isCors","defaultQuery","isDataAvailable","ready","executeQuery","setDefaultQuery","executeLocal","subQuery","lookup","lookups","buildHierarchy","using","always","deffered","Deferred","isCustomDataAdaptor","makeRequest","getDeferedArgs","nextTick","extendRequest","fnSuccess","fnFail","processData","isSelector","subQuerySelector","process","virtualSelectRecords","fnQueryChild","subDeffer","childArgs","isChild","subUrl","childReq","subData","isGraphQLAdaptor","ajaxReqOption","virtualRecords","ajax_1","all","pResult","cResult","doAjaxRequest","deff_1","ajax_2","successFunc","failureFunc","ajaxDeffered","ajaxFunc","ajax_3","fnAscending","fnDescending","localeCompare","extractFields","jsonArray","newData","isLazyLoad","jsonData","indx","childLevels","grouped","groupedArray","records","this_2","getVal","tempObj","aggs","grp","fKeyData","copyObj","middle","ignoreDiacritics","diacritics","fnName","param1","param2","adp","rand","Uint8Array","getItemFromComparer","castRequired","distinct","requiresCompleteRecord","prepareQuery","sampledata","requiresCounts","requiresCount","pred","predicateList","getPredicate","and","sorted","mainPred","childPred","cpre","sum","average","truecount","falsecount","operatorSymbols","fnOperators","equal","expected","notequal","lessthan","greaterthan","lessthanorequal","greaterthanorequal","notnull","isnull","startswith","endswith","processSymbols","processOperator","jsonText","jsonReviver","iterateAndReviveArray","iterateAndReviveJson","offSet","toTimeZone","utcFormat","hrs","mins","addSelfOffset","jsonReplacer","arrayReplacer","keys_3","toUTC","datefn","differenceString","localtimefn","norm","sortedColumns","groupedColumns","execute","cloned","tables","isFromGroup","sortByForeignKey","sortByDesc","hierarchy","selectorFn","foreignKey","filtered","combinePredicates","combine","fromJson","fromJSONData","isAnd","preds","ul","icon","check","hasChild","collapsible","image","iconWrapper","anchorWrap","navigable","getFieldValues","dataItem","fieldData","isHeader","dataField","compileTemplate","defaultMappedFields","isChecked","iconCss","hasChildren","tooltip","urlAttributes","imageAttributes","imageUrl","groupBy","defaultAriaAttributes","listRole","itemRole","groupItemRole","itemText","wrapperRole","defaultListBaseOptions","showCheckBox","showIcon","expandCollapse","ariaAttributes","listClass","itemClass","processSubChild","sortOrder","groupTemplate","headerTemplate","expandIconClass","expandIconPosition","itemNavigable","createListFromArray","isSingleLevel","componentInstance","generateUL","createListItemFromArray","curOpt","getModuleClass","generateId","itemCreating","generateSingleLevelLI","generateLI","itemCreated","createListItemFromJson","checkboxElement","anchorElement","typeofData","curItem","innerEle","imageElemnt","iconElement","createListFromJson","elementArray","addSorting","getDataSource","typeof","elementAttributes","class","getAllAttributes","subDS","subLi","innerElements","grpLI","elementID","anchorTag","isFullNavigation","anchorWrapper","uID","compiledString","compiledElement","groupTemplateID","templateID","innerDiv","liElement","ulElement","createList","getSiblingLI","isPrevious","siblingLI","liIndex","liCollections","groupDataSource","curFields","cusQuery","itemObj","grpItem","newtext","_id","createJsonFromElement","curEle","jsonAr","childs","i_1","hasChildNodes","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","category","headerItems_1","headerData","generateIcon","TimePickerBase","POPUPDIMENSION","DAY","HOVER","NAVIGATION","FOCUS","LISTCLASS","EDITABLE","wrapperAttributes","createListItems","createdEl","listItems","timeCollections","TimeMaskPlaceholder","TimePicker","disableItemCollection","timeOptions","keyConfigure","down","up","angularTag","openPopupEventArgs","createInputElement","setTimeAllowEdit","validateInterval","validateDisable","getFormattedValue","checkErrorState","inputEleValue","clearIconState","setMinMax","initMin","initMax","popupCreation","valueIsDisable","resetState","initValue","checkTimeFormat","checkInValue","scrollTo","checkAttributes","localeText","isPreventBlur","isTextSelected","activeIndex","valueWithMinutes","prevDate","updatedCssClassesValue","isNullOrEmpty","inputStyle","getCldrDateTimeFormat","cldrFormat","isInvalid","valueExp","valueExpression","setCurrentDate","getCultureTimeObject","ariaAttribute","enableElement","rippleFn","propertyList","generateList","listWrapper","addSelection","renderPopup","getPopupHeight","popupHeight","wireListEvents","containerStyle","setPopupWidth","unWireListEvents","listTag","maxHeight","createDateObj","updatedClassesValue","timeStyle","cssClassNew","cssClassOld","removeErrorClass","validateState","disableTimeIcon","disableElement","selectInputText","setCursorToEnd","getMeridianText","meridian","getCursorSelection","getActiveElement","setScrollPosition","setScrollTo","findScrollTop","listHeight","nextEle","nextElementSibling","liHeight","initialTime","scrollTime","getText","cldrDateFormat","getCultureDateObject","dateToNumeric","getExactDateTime","validateMinMax","compareFormatChange","updatePlaceHolder","popupHandler","isPopupOpen","closePopup","mouseDownHandler","curPos","cursorDetails","focusSelection","isSeparator","keyHandler","objToString","previousState","onMouseClick","animModel","documentClickHandler","mobileTimePopupWrap","disposeServerPopup","checkValueChange","isNavigation","valueProcess","prevValue","onMouseOver","currentLi","setHover","isValidLI","removeHover","onMouseLeave","scrollHandler","minVal","maxVal","dateVal","strictOperation","maxValue","minValue","inputEventHandler","inputEvent","timeValue","raiseClearedEvent","setZIndex","getTextFormat","strArray","removeSelection","validateValue","newval","value_1","findNextElement","textVal","timeVal","collections","selectNextItem","validLiElement","elementValue","backward","elementIndex","isCheck","nextItem","isUpdate","hoveredItem","getHoverItem","setActiveClass","timeParse","listBaseOptions","getProperty","popupAlignment","timePopupElement","formatValues","DATETIMEPOPUPWRAPPER","POPUP","ICONANIMATION","DateTimePicker","scrollInvoked","dateTimeOptions","blurHandler","isTimePopupOpen","popupObject","dateTimeWrapper","keyboardHandler","unBindInputEvents","timekeyConfigure","cldrDateTimeFormat","bindInputEvents","validateMinMaxRange","isDateObject","disablePopupButton","checkValidState","isValidState","isDisable","timeIcon","renderTimeIcon","timeHandler","dateHandler","inputKeyAction","getCldrFormat","isDatePopupOpen","toggle","listCreation","endTime","listDetails","wireTimeListEvents","addTimeSelection","setTimeScrollPosition","openPopup","timeModal","timeKeyActionHandle","unWireTimeListEvents","setDimension","setTimeHover","removeTimeHover","setInputValue","nextElement","getFullDateTime","combineDateTime","setTimeActiveClass","setTimeActiveDescendant","removeTimeSelection","getTimeHoverItem","calculateStartEnd","tempStartValue","tempMin","tempEndValue","tempMax","dateTimeCloseEventCallback","maskedDateModule","getTimeActiveElement","status_1","findNextTimeElement","dateTimeVal","listCount","timeElementValue","setTimeValue","timeKeyHandler","nextItemValue","DateTimePickerComponent","globalTimeOut","CLS_SHOWSPIN","CLS_HIDESPIN","CLS_MATERIALSPIN","CLS_FABRICSPIN","CLS_FLUENTSPIN","CLS_TAILWINDSPIN","CLS_BOOTSPIN","CLS_BOOT4SPIN","CLS_BOOT5SPIN","CLS_HIGHCONTRASTSPIN","CLS_SPINWRAP","CLS_SPININWRAP","CLS_SPINCIRCLE","CLS_SPINLABEL","CLS_SPINTEMPLATE","spinTemplate","spinCSSClass","createSpinner","spinnerContainer","spinnerInnerContainer","inner_wrap","create_spinner_container","theme","getTheme","defaultSize","calculateRadius","setTheme","labelEle","createLabel","replaceContent","innerContainer","svg","random_generator","timeOut","create_material_element","mat_calculate_attributes","createMaterialSpinner","create_fabric_element","fb_calculate_attributes","createFabricSpinner","createFluentSinner","svgBoot","viewBoxValue","trans","defaultRadius","bootCircle","create_bootstrap_element","rad","startArc","defineArcPoints","circleEle","boot_calculate_attributes","createBootstrapSpinner","createHighContrastSpinner","createBootstrap4Spinner","createBootstrap5Spinner","createTailwindSpinner","generateSeries","series","increment","formSeries","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","cls","svgMaterial","matCirclePath","animateMaterial","spinnerInfo","globalInfo","previousId","strokeSize","getStrokeSize","rotate","mat_animation","updatePath","getDashOffset","createCircle","easeAnimation","transformOrigin","drawArc","PI","timestamp","timecount","innerConainer","trgClass","centerX","centerY","circle","defineCircle","endArc","defineArc","angle","radians","cos","sin","showSpinner","showHideSpinner","isHide","spinnerWrap","inner","svgEle","isAnimate","globalObject","globalVariables","timeOutVar","startMatAnimate","rotation","boot_animate","animateBootstrap","hideSpinner","queryString","prevString","prevElementId","Search","searchType","itemData","strLength","queryStr","itemsData","FieldSettings","dropDownBaseClasses","DropDownBase","isPreventChange","isDynamicDataChange","getPropObject","newProperty","oldProperty","getValueByText","listData","checkValueCase","isTextByValue","typeOfData","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","compareValue_1","itemValue","textItem","typedText","templateCompiler","baseTemplate","checkTemplate","l10nUpdate","actionFailure","noRecordsTemplate","actionFailureTemplate","actionFailureTemplateId","noRecordsTemplateId","noDataCompTemp","componentLocale","getLocaleName","liElem","getTextByValue","enableRtlElements","bindEvent","jsonElement","resetList","setListData","renderItemsBySelect","updateDataAttribute","invalidAttr","getJSONfromOption","optionGroup","updateFields","scrollTimer","isRequested","isDataFetched","itemTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","isActive","emptyDataRequest","renderItems","onActionComplete","bindChildItems","onActionFailure","localDataArgs","itemTemplate","childElementCount","updateDataList","remainingItems","sortedData","updateListValues","raiseDataBound","findListElement","findNode","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","listOption","fixedHeaderElement","allowCustomValue","postRender","listElement","focusItem","selectedItem","listEle","groupValue","tempHeaders","isGroupChecking","getSortedDataSource","fieldValues","setFloatingHeader","setFixedHeader","scrollStop","getValidLi","topIndex","liWidth","firstLi","textField","getIndexByValue","getItems","setFields","selectData","updateSelectElementData","isFiltering","updateSelection","renderList","updateDataSource","setUpdateInitial","updateData","isEmptyData","rippleFun","addItem","itemIndex","itemsCount","selectedItemValue","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","hidden","itemCount","getDataByValue","dropDownListClasses","hover","rtl","disable","inputFocus","iconAnimation","device","backIcon","filterBarClearIcon","filterInput","filterParent","mobileFilter","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","DropDownList","isListSearched","valueTempElement","initializeData","isDocumentClick","isFilterFocus","beforePopupOpen","initRemoteRender","isNotSearchList","isTyped","isSelected","preventFocus","preventAutoFill","isValidKey","typedString","isEscapeKey","isTabKey","actionCompleteData","isUpdated","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isCustomFilter","isSecondClick","space","floatLabelChange","floatElement","clearAll","resetFocusElement","removeFocus","resetSelection","getItemData","onChangeEvent","allowFiltering","selectedLI","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","defaultAttr","getAriaAttributes","targetElement","hidePopup","preventTabIndex","getNgDirective","getElementByText","getElementByValue","listItems_1","liItem","updateValues","setHiddenValue","onBlurHandler","isFilterLayout","focusOutAction","onFocusOut","onFocus","resetValueHandler","wireEvent","dropDownClick","bindCommonEvent","mobileKeyActionHandler","keyActionHandler","unBindCommonEvent","searchKeyEvent","onServerIncrementalSearch","incrementalSearch","back","selectedIndex","elementId","spinnerElement","filterInputObj","preventAction","preventHomeEnd","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","getPageCount","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","focusEle","isSelectFocusItem","startIndex","findLi","steps","previousItem","unWireEvent","checkSelector","onDocumentClick","activeStateChange","proxy_1","updateSelectedItem","preventSelect","isSelection","selectedData","selectEventCallback","setSelectOptions","detachChanges","previousItemData","focusedItem","activeItem","valueTemplate","setValueTemplate","clearElement","previousSelectedLI","dropdownCompiler","dropdownTemplate","valueCompTemp","selectedItems","dataValue","dataText","detachChangeEvent","preItems","onFilterUp","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","filterQuery","filterType","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","focusIndexItem","setSearchBox","filterBarPlaceholder","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","checkField_1","updateActionCompleteDataValues","addNewItem","newElement","actionCompleteDataUpdate","highlightedItem","refreshPopup","popupEle","searchBox","setHeaderTemplate","footerTemplate","setFooterTemplate","searchBoxHeight","getOffsetValue","firstItem","isEmptyList","textIndent","paddingLeft","borderLeftWidth","getFocusElement","createPopup","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","listScroll","destroyPopup","popupStyles","borderTop","borderTopWidth","borderBottom","borderBottomWidth","setPopupPosition","actionList","border","popupOffset","lastItem","paddingBottom","scrollBottom","isInitial","currentOffset","nextBottom","nextOffset","paddingTop","boxRange","isPopupButton","setEleWidth","scrollableParentElements_1","fixedHeader","setReadOnly","selectElement","onselect","stopImmediatePropagation","onchange","footerCompTemp","headerCompTemp","contentEle","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","checkValidLi","setSelectionData","listLength_1","checkField","listLength_2","ddlProps","newClass","invokeRenderPopup","proxy_2","onpopstate","pushState","renderHightSearch","isSelectVal","attrArray","DropDownListComponent","FLOATLINE","FLOATTEXT","LABELTOP","LABELBOTTOM","createFloatLabel","overAllWrapper","searchWrapper","encodePlaceholder","updateFloatLabelState","setPlaceHolder","spanElement","HIDE_LIST","CHIP","CHIP_CLOSE","CHIP_SELECTED","DELIMITER_VIEW_WRAPPER","ZERO_SIZE","CLOSEICON_CLASS","DELIMITER_WRAPPER","RTL_CLASS","CLOSE_ICON_HIDE","DISABLE_ICON","SPINNER_CLASS","dropdownIcon","TOTAL_COUNT_WRAPPER","CUSTOM_WIDTH","FILTERINPUT","MultiSelect","clearIconWidth","selectAllEventData","selectAllEventEle","scrollFocusStatus","keyDownStatus","enableRTL","enableGroupCheckBox","prevOnChange","enableSelectionOrder","hideSelectedItem","closePopupOnSelect","updateHTMLAttribute","refreshPlaceHolder","updateReadonly","updateClearButton","overAllClear","componentWrapper","updateOldPropCssClass","onPopupShown","focusAtFirstListItem","updateListItems","mainList","showDropDownIcon","isFirstClick","loadTemplate","mainListItems","findGroupStart","deselectHeader","refreshListItems","valueEle","addListFocus","focusAtLastListItem","updateListARIA","disableStatus","ensureAriaDisabled","removelastSelection","chipCollectionWrapper","customValue","removeValue","removeChipSelection","updateDelimeter","delimiterChar","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","targetInputElement","getForQuery","valuecheck","updateActionList","showSelectAll","mainData","mainListCollection","remoteCustomValue","checkForCustomValue","tempQuery","unwireListEvents","setInitialValue","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","changeOnBlur","updateValueState","previousElementSibling","hideGroupItem","ariaValue","checkSelectAll","checkMaxSelection","element1","temp1","groupItemLength","listItem","searchCount","searchActiveCount","maximumSelectionLength","openClick","openOnClick","keyUp","expandTextbox","showOverAllClear","isFiltered","remoteFilterAction","dataUpdater","filterAction","backCommand","dataChecks","customData","tempData","wrapperClick","isDocClickFromCheck","addTagOnBlur","listLiElement","updateListSelection","updateDelimView","focused","removeChipFocus","refreshInputHight","floatLabelBlur","downIconWidth","dropIcon","setPlaceholderSize","initStatus","updateTempValue","getPagingCount","focusInHandler","showDelimWrapper","viewWrapper","floatLabelFocus","delimiterWrapper","hideDelimWrapper","mobFilter","calcPopupWidth","checkTextLength","popupKeyActions","updateAriaAttribute","homeNavigation","isHome","scrollEle","onKeyDown","arrowUp","arrowDown","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","focuseElem","moveBy","removeSelectedChip","selectListByKey","hideOverAllClear","lastElementChild","selectAllItem","selectedElem","addChipSelection","moveByTop","updateCheck","chipClick","elem","onChipRemove","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","removeVal","invokeCheckboxSelection","updateMainList","updateChipStatus","isSelectAll","targetEle","val_1","removeIndex","hideElement","removeChip","targetEle_1","clearAllCallback","element2","addValue","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","chipClose","multiCompiler","multiselectTemplate","chip","chipContent","mouseIn","mouseOut","fieldProperty","listCurrentOptions","checkboxFilter","overAllHeight","selectAllHeight","checkboxFilterInput","onListMouseDown","selectAllItems","windowResize","delim","listValue","updateWrapperText","addValidInputClass","textArr","removeListSelection","indexItem","noDataEle","replaceChild","isDynamicGroupItemUpdate","isReactTemplateUpdate","isAngularTemplateUpdate","temp_1","fieldValue","data_1","selectItems","mainlist","addListHover","ariaCheck","delimChar","groupValues","findGroupAttrtibutes","updateCheckBox","unChecked","groupHeader","checkBoxElement","filterClear","wrapperType","wrapperData","tempIndex","wrapperleng","remaining","overAllContainer","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","raminElement","remainCompildTemp","remainSize","checkClearIconWidth","getOverflowVal","paddingRight","totalWidth","updateRemainTemplate","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","selectionLimit","focusedElement","textboxValueUpdate","beforeSelectArgs","preventSelectEvent","index_1","count_1","updatedataValueItems","updateHiddenElement","hiddenValue","wrapperText","isRemoveAll","onLoadSelect","updateVal","dropDownIcon","reInitializePoup","msProps","presentItemValue","addNonPresentItems","mainLiLength","liLength","SEARCHBOX_WRAPPER","DELIMITER_VIEW","spellcheck","autocomplete","tabindex","checkInitialValue","isData","optionsElement","valueCol","textCol","optionsLen","checkAutoFocus","placeholderText","placeholderElement","MultiSelectComponent","TEXTBOX_FOCUS","TextBox","isHiddenInput","isForm","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","isBlank","raiseChangeEvent","updateHTMLAttrToElement","updateHTMLAttrToWrapper","multiline","textarea","apiAttributes","attrs_1","autoCompleteTxt","updatedCssClassValue","getInputValidClassList","inputClassName","resetForm","animationHandler","resetValue","localChange","interaction","isInteraction","resetInputHandler","TextBoxComponent","SPINICON","SPINUP","INCREMENT","DECREMENT","INTREGEXP","NUMERIC_FOCUS","NumericTextBox","isDynamicChange","numericOptions","isPrevFocused","decimalSeparator","intRegExp","isCalled","angularTagName","formEle","incrementTitle","decrementTitle","inputName","cultureInfo","initCultureInfo","initCultureFunc","validateStep","updatePlaceholder","createWrapper","showSpinButton","spinBtnCreation","setElementWidth","changeValue","trimValue","decimals","roundNumber","hiddenInput","elementPrevValue","setNumber","stepValue","getNumericValidClassList","pro","numericClassName","numericStyle","spinDown","spinUp","wireSpinBtnEvents","MAX_VALUE","formattedValue","operation","isInteract","performAction","checkErrorClass","setElementValue","keyupEvent","setSpinButton","keyDownHandler","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveOnSpinner","unwireSpinBtnEvents","beforeUpdate","preventHandler","iOS","currentPos","prevPos","valArray","ignoreKeyCode","prevVal","cursorPosChanged","validateDecimalOnType","parseValue","parsedValue","updatedValue","correctRounding","floatExp","floatValue","floatStep","valueCount","stepCount","roundValue","precision","divide","updateCurrency","propVal","numberOfDecimals","getNumberOfDecimals","modifyText","serverDecimalSeparator","EXPREGEXP","decimalPart","result1","result2","currentChar","fractionRule","mouseWheel","delta","rawEvent","focusEventArgs","formatValue_1","isIos","blurEventArgs","ele_1","focusEvent","getElementData","mouseUpClick","touchEvent","clearInterval","floatLabelTypeUpdate","decrement","updateSpinButton","propValue","NumericTextBoxComponent","_extends","_assertThisInitialized","ReferenceError","ReCAPTCHA","_React$Component","subClass","superClass","handleExpired","handleErrored","handleChange","handleRecaptchaRef","_proto","grecaptcha","_widgetId","getResponse","getWidgetId","_executeRequested","executeAsync","_this2","executionResolve","executionReject","onExpired","onErrored","explicitRender","sitekey","stoken","badge","captcha","delayOfCaptchaIframeRemoving","temporaryNode","_this$props","excluded","sourceKeys","_objectWithoutPropertiesLoose","SCRIPT_MAP","idCount","callbackName","getScriptURL","recaptchaOptions","useRecaptchaNet","globalName","WrappedComponent","wrappedComponentName","AsyncScriptLoader","_Component","__scriptURL","asyncScriptLoaderGetScriptLoaderID","__scriptLoaderID","setupScriptURL","asyncScriptLoaderHandleLoad","asyncScriptOnLoad","asyncScriptLoaderTriggerOnScriptLoaded","mapEntry","obsKey","observers","_this3","scriptURL","_options","scriptId","errored","callObserverFuncAndRemoveObserver","observersMap","observer","removeOnUnmount","allScripts","forwardedRef","ForwardedComponent","hoistStatics","_objectWithoutProperties","sourceSymbolKeys","propertyIsEnumerable","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","client","customHeaders","customConfig","Authorization","fetch","appConfig","showFooter","FosLogo","alt","rel","setErrors","submitted","setSubmitted","recaptchaToken","setRecaptchaToken","grecaptchaObject","multiSelectValues","setMultiSelectValues","submitBehaviorTypes","buttonStyle","backgroundColor","submitButtonOption","fontColor","borderColor","borderRadius","handleMultiSelect","fieldOption","getBorderRadius","onSubmit","inquiryFormReference","formFields","sRef","getElementsByName","normalizedName","isDateTimeType","zonedDate","moment","toUtcDateTimeFormat","isDateType","toUtcDateFormat","isBooleanType","isDropDown","selectedOptions","inputField","customFieldDefinitionReference","definitionReference","isCustomField","isSuccessful","submitOption","afterSubmitBehavior","submitBehaviorReference","redirectUrl","messages","description","handleResponse","fontFamily","Standard","Wide","Narrow","Friendly","Traditional","formFont","formHeading","primaryHeadingName","secondaryHeadingName","htmlFor","isTextType","optionValue","isTextAreaType","isNumberType","isDecimalType","showPoweredByFooter","messageTitle","useParams","embeded","standaloneFormOption","App","getElementById"],"sourceRoot":""}